黑马程序员技术交流社区
标题:
IO练习敲得代码
[打印本页]
作者:
彭卫红
时间:
2014-8-30 22:52
标题:
IO练习敲得代码
File操作//创建文件
import java.io.File;
import java.io.IOException;
//此方法的主要作用是判断创建文件是否成功,如果成功则返回true否则返回false
public class Demo4 {
public static boolean createFile(String destFileName) {
File file = new File(destFileName); // 根据指定的文件名创建File对象
if (file.exists()) { // 判断该文件是否存在
System.out.println("创建单个文件" + destFileName + "失败,目标文件已存在!");
return false; // 如果存在,则不需创建则返回fasle
}
if (destFileName.endsWith(File.separator)) {// 如果传入的文件名是以文件分隔符结尾的,则说明此File对象是个目录而不是文件
System.out.println("创建单个文件" + destFileName + "失败,目标文件不能为目录!");
return false;// 因为不是文件所以不可能创建成功,则返回false
}
if (!file.getParentFile().exists()) {
// 如果目标文件所在的文件夹不存在,则创建父文件夹
System.out.println("创建" + file.getName() + "所在目录不存在,正在创建!");
if (!file.getParentFile().mkdirs()) {// 判断父文件夹是否存在,如果存在则表示创建成功否则不成功
System.out.println("创建目标文件所在的目录失败!");
return false;
}
}
// 创建目标文件
try {
if (file.createNewFile()) {// 调用createNewFile方法,判断创建指定文件是否成功
System.out.println("创建单个文件" + destFileName + "成功!");
return true;
} else {
System.out.println("创建单个文件" + destFileName + "失败!");
return false;
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("创建文件" + destFileName + "失败!" + e.getMessage());
return false;
}
}
public static void main(String[] args) {
// 创建目录
String dirName = "D:/temp/aa";
// 创建文件
String fileName = dirName + "/bb/ccFile.txt";
Demo4.createFile(fileName);
}
}
移动某个指定的文件,但移动成功后不会覆盖已存在的目标文件
import java.io.File;
public class Demo6 {
// 移动某个指定的文件,但移动成功后不会覆盖已存在的目标文件
public static boolean moveA_File(String sourceFileName,
String targetFileName) {
return Demo6.moveA_File(sourceFileName, targetFileName, false);
}
// 移动某个指定的文件,但移动成功后可以根据isOverlay的值来决定是否覆盖已存在的目标文件
public static boolean moveA_File(String sourceFileName,
String targetFileName, boolean isOverlay) {
// 判断原文件是否存在
File sourceFile = new File(sourceFileName);
if (!sourceFile.exists()) {
System.out.println("移动文件失败:原文件" + sourceFileName + "不存在!");
return false;
} else if (!sourceFile.isFile()) {
System.out.println("移动文件失败:" + sourceFileName + "不是一个文件!");
return false;
}
File targetFile = new File(targetFileName);
if (targetFile.exists()) {// 判断目标文件是否存在
if (isOverlay) {// 如果目标文件存在,是否允许覆盖目标文件
// 删除已存在的目标文件,无论目标文件是目录还是单个文件
System.out.println("该文件已存在,准备删除它!");
if (!Demo5.deleteAnyone(targetFileName)) {
System.out.println("文件移动失败,删除文件" + targetFileName + "失败!");
return false;
}
} else {
System.out.println("文件移动失败,文件" + targetFileName + "已存在!");
return false;
}
} else {
if (!targetFile.getParentFile().exists()) {
// 如果目标文件所在的目录不存在,则创建目录
System.out.println("该文件所在目录不存在,正在创建!");
if (!targetFile.getParentFile().mkdirs()) {
System.out.println("移动文件失败,创建文件所在的目录失败!");
return false;
}
}
}
// 移动原文件至目标文件
if (sourceFile.renameTo(targetFile)) {
System.out.println("移动文件" + sourceFileName + "到" + targetFileName
+ "成功!");
return true;
} else {
System.out.println("移动文件" + sourceFileName + "到" + targetFileName
+ "失败!");
return true;
}
}
public static boolean moveDir(String sourceDirName, String targetDirName) {
// 默认为不覆盖目标文件
return Demo6.moveDir(sourceDirName, targetDirName, false);
}
// 移动某个指定的目录,但移动成功后可以根据isOverlay的值来决定是否覆盖当前已存在的目标目录
public static boolean moveDir(String sourceDirName, String targetDirName,
boolean isOverlay) {
// 判断原目录是否存在
File sourceDir = new File(sourceDirName);
if (!sourceDir.exists()) {
System.out.println("移动目录失败,原始目录" + sourceDirName + "不存在!");
return false;
} else if (!sourceDir.isDirectory()) {
System.out.println("移动目录失败," + sourceDirName + "不是一个目录!");
return false;
}
// 如果目标文件夹名不以文件分隔符结尾,自动添加文件分隔符
if (!targetDirName.endsWith(File.separator)) {
targetDirName = targetDirName + File.separator;
}
File targetDir = new File(targetDirName);
// 如果目标文件夹存在,
if (targetDir.exists()) {
if (isOverlay) {
// 允许覆盖则删除已存在的目标目录
System.out.println("该目录已存在,准备删除它!");
if (!Demo5.deleteAnyone(targetDirName)) {
System.out.println("移动目录失败:删除目录" + targetDirName + "失败!");
}
} else {
System.out.println("移动目录失败:该目录" + targetDirName + "已存在!");
return false;
}
} else {
// 创建目标目录
System.out.println("该目录不存在,正在创建!");
if (!targetDir.mkdirs()) {
System.out.println("移动目录失败:创建该目录失败!");
return false;
}
}
boolean flag = true;
// 移动原目录下的文件和子目录到目标目录下
File[] files = sourceDir.listFiles();
for (int i = 0; i < files.length; i++) {
// 移动子文件
if (files[i].isFile()) {
flag = Demo6.moveA_File(files[i].getAbsolutePath(),
targetDirName + files[i].getName(), isOverlay);
if (!flag) {
break;
}
}
// 移动子目录
else if (files[i].isDirectory()) {
flag = Demo6.moveDir(files[i].getAbsolutePath(), targetDirName
+ files[i].getName(), isOverlay);
if (!flag) {
break;
}
}
}
if (!flag) {
System.out.println("目录" + sourceDirName + "移动到" + targetDirName
+ "失败!");
return false;
}
// 删除原目录
if (Demo5.deleteDir(sourceDirName)) {
System.out.println("目录" + sourceDirName + "移动到" + targetDirName
+ "成功!");
return true;
} else {
System.out.println("目录" + sourceDirName + "移动到" + targetDirName
+ "失败!");
return false;
}
}
public static void main(String[] args) {
// 移动文件,如果目标文件存在,则替换
System.out.println("调用moveA_File方法的结果如下:");
String sourceFileName = "D:\\temp\\keytoolcmd.txt";
String targetFileName = "D:\\test\\temp\\keytoolcmd.txt.";
Demo6.moveA_File(sourceFileName, targetFileName, true);
// 移动目录,如果目标目录存在,则不覆盖
System.out.println("\n调用moveDir方法的结果如下:");
String sourceDirName = "D:\\temp\\aa";
String targetDirName = "F:\\abc";
Demo6.moveDir(sourceDirName, targetDirName);
}
}
复制代码
感兴趣的可以敲一下
作者:
范靖明
时间:
2014-8-30 23:20
我今晚才开始学Io感觉进度好慢啊,在由于哟啊不要辞职呢
作者:
彭卫红
时间:
2014-8-30 23:34
范靖明 发表于 2014-8-30 23:20
我今晚才开始学Io感觉进度好慢啊,在由于哟啊不要辞职呢
想跟你说,我现在刚刚辞职。
作者:
谢建平
时间:
2014-8-31 01:47
唉 时间啊时间 真不够
作者:
yjiang_09
时间:
2014-8-31 01:53
我已经辞职了,下周就不上班了。感觉去年一年都荒废了。。。根本就没学到什么东西。也怪自己。
作者:
Sakuratossi
时间:
2014-8-31 09:49
好详细的代码,可以做参考了,呵呵
作者:
范靖明
时间:
2014-8-31 23:01
我正研究九月辞职呢!时间真心不够!
作者:
bullfrog
时间:
2014-8-31 23:56
这个代码格式怎么弄的?
作者:
花开彼岸天
时间:
2014-8-31 23:59
本来我是月底辞职的 谁知道公司还没招来人,得等到9.7号才能走
作者:
liqi
时间:
2014-9-1 00:16
得辞职好好学
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2