黑马程序员技术交流社区

标题: IO练习敲得代码 [打印本页]

作者: 彭卫红    时间: 2014-8-30 22:52
标题: IO练习敲得代码
  1. File操作//创建文件
  2. import java.io.File;
  3. import java.io.IOException;

  4. //此方法的主要作用是判断创建文件是否成功,如果成功则返回true否则返回false
  5. public class Demo4 {
  6.         public static boolean createFile(String destFileName) {
  7.                 File file = new File(destFileName); // 根据指定的文件名创建File对象
  8.                 if (file.exists()) { // 判断该文件是否存在
  9.                         System.out.println("创建单个文件" + destFileName + "失败,目标文件已存在!");
  10.                         return false; // 如果存在,则不需创建则返回fasle
  11.                 }
  12.                 if (destFileName.endsWith(File.separator)) {// 如果传入的文件名是以文件分隔符结尾的,则说明此File对象是个目录而不是文件
  13.                         System.out.println("创建单个文件" + destFileName + "失败,目标文件不能为目录!");
  14.                         return false;// 因为不是文件所以不可能创建成功,则返回false
  15.                 }
  16.                 if (!file.getParentFile().exists()) {
  17.                         // 如果目标文件所在的文件夹不存在,则创建父文件夹
  18.                         System.out.println("创建" + file.getName() + "所在目录不存在,正在创建!");
  19.                         if (!file.getParentFile().mkdirs()) {// 判断父文件夹是否存在,如果存在则表示创建成功否则不成功
  20.                                 System.out.println("创建目标文件所在的目录失败!");
  21.                                 return false;
  22.                         }
  23.                 }
  24.                 // 创建目标文件
  25.                 try {
  26.                         if (file.createNewFile()) {// 调用createNewFile方法,判断创建指定文件是否成功
  27.                                 System.out.println("创建单个文件" + destFileName + "成功!");
  28.                                 return true;
  29.                         } else {
  30.                                 System.out.println("创建单个文件" + destFileName + "失败!");
  31.                                 return false;
  32.                         }
  33.                 } catch (IOException e) {
  34.                         e.printStackTrace();
  35.                         System.out.println("创建文件" + destFileName + "失败!" + e.getMessage());
  36.                         return false;
  37.                 }
  38.         }

  39.         public static void main(String[] args) {
  40.                 // 创建目录
  41.                 String dirName = "D:/temp/aa";
  42.                 // 创建文件
  43.                 String fileName = dirName + "/bb/ccFile.txt";
  44.                 Demo4.createFile(fileName);
  45.         }
  46. }

  47. 移动某个指定的文件,但移动成功后不会覆盖已存在的目标文件
  48. import java.io.File;

  49. public class Demo6 {
  50.         // 移动某个指定的文件,但移动成功后不会覆盖已存在的目标文件
  51.         public static boolean moveA_File(String sourceFileName,
  52.                         String targetFileName) {
  53.                 return Demo6.moveA_File(sourceFileName, targetFileName, false);
  54.         }

  55.         // 移动某个指定的文件,但移动成功后可以根据isOverlay的值来决定是否覆盖已存在的目标文件
  56.         public static boolean moveA_File(String sourceFileName,
  57.                         String targetFileName, boolean isOverlay) {
  58.                 // 判断原文件是否存在
  59.                 File sourceFile = new File(sourceFileName);
  60.                 if (!sourceFile.exists()) {
  61.                         System.out.println("移动文件失败:原文件" + sourceFileName + "不存在!");
  62.                         return false;
  63.                 } else if (!sourceFile.isFile()) {
  64.                         System.out.println("移动文件失败:" + sourceFileName + "不是一个文件!");
  65.                         return false;
  66.                 }
  67.                 File targetFile = new File(targetFileName);
  68.                 if (targetFile.exists()) {// 判断目标文件是否存在
  69.                         if (isOverlay) {// 如果目标文件存在,是否允许覆盖目标文件
  70.                                 // 删除已存在的目标文件,无论目标文件是目录还是单个文件
  71.                                 System.out.println("该文件已存在,准备删除它!");
  72.                                 if (!Demo5.deleteAnyone(targetFileName)) {
  73.                                         System.out.println("文件移动失败,删除文件" + targetFileName + "失败!");
  74.                                         return false;
  75.                                 }
  76.                         } else {
  77.                                 System.out.println("文件移动失败,文件" + targetFileName + "已存在!");
  78.                                 return false;
  79.                         }
  80.                 } else {
  81.                         if (!targetFile.getParentFile().exists()) {
  82.                                 // 如果目标文件所在的目录不存在,则创建目录
  83.                                 System.out.println("该文件所在目录不存在,正在创建!");
  84.                                 if (!targetFile.getParentFile().mkdirs()) {
  85.                                         System.out.println("移动文件失败,创建文件所在的目录失败!");
  86.                                         return false;
  87.                                 }
  88.                         }
  89.                 }
  90.                 // 移动原文件至目标文件
  91.                 if (sourceFile.renameTo(targetFile)) {
  92.                         System.out.println("移动文件" + sourceFileName + "到" + targetFileName
  93.                                         + "成功!");
  94.                         return true;
  95.                 } else {
  96.                         System.out.println("移动文件" + sourceFileName + "到" + targetFileName
  97.                                         + "失败!");
  98.                         return true;
  99.                 }
  100.         }

  101.         public static boolean moveDir(String sourceDirName, String targetDirName) {
  102.                 // 默认为不覆盖目标文件
  103.                 return Demo6.moveDir(sourceDirName, targetDirName, false);
  104.         }

  105.         // 移动某个指定的目录,但移动成功后可以根据isOverlay的值来决定是否覆盖当前已存在的目标目录
  106.         public static boolean moveDir(String sourceDirName, String targetDirName,
  107.                         boolean isOverlay) {
  108.                 // 判断原目录是否存在
  109.                 File sourceDir = new File(sourceDirName);
  110.                 if (!sourceDir.exists()) {
  111.                         System.out.println("移动目录失败,原始目录" + sourceDirName + "不存在!");
  112.                         return false;
  113.                 } else if (!sourceDir.isDirectory()) {
  114.                         System.out.println("移动目录失败," + sourceDirName + "不是一个目录!");
  115.                         return false;
  116.                 }
  117.                 // 如果目标文件夹名不以文件分隔符结尾,自动添加文件分隔符
  118.                 if (!targetDirName.endsWith(File.separator)) {
  119.                         targetDirName = targetDirName + File.separator;
  120.                 }
  121.                 File targetDir = new File(targetDirName);
  122.                 // 如果目标文件夹存在,
  123.                 if (targetDir.exists()) {
  124.                         if (isOverlay) {
  125.                                 // 允许覆盖则删除已存在的目标目录
  126.                                 System.out.println("该目录已存在,准备删除它!");
  127.                                 if (!Demo5.deleteAnyone(targetDirName)) {
  128.                                         System.out.println("移动目录失败:删除目录" + targetDirName + "失败!");
  129.                                 }
  130.                         } else {
  131.                                 System.out.println("移动目录失败:该目录" + targetDirName + "已存在!");
  132.                                 return false;
  133.                         }
  134.                 } else {
  135.                         // 创建目标目录
  136.                         System.out.println("该目录不存在,正在创建!");
  137.                         if (!targetDir.mkdirs()) {
  138.                                 System.out.println("移动目录失败:创建该目录失败!");
  139.                                 return false;
  140.                         }
  141.                 }
  142.                 boolean flag = true;
  143.                 // 移动原目录下的文件和子目录到目标目录下
  144.                 File[] files = sourceDir.listFiles();
  145.                 for (int i = 0; i < files.length; i++) {
  146.                         // 移动子文件
  147.                         if (files[i].isFile()) {
  148.                                 flag = Demo6.moveA_File(files[i].getAbsolutePath(),
  149.                                                 targetDirName + files[i].getName(), isOverlay);
  150.                                 if (!flag) {
  151.                                         break;
  152.                                 }
  153.                         }
  154.                         // 移动子目录
  155.                         else if (files[i].isDirectory()) {
  156.                                 flag = Demo6.moveDir(files[i].getAbsolutePath(), targetDirName
  157.                                                 + files[i].getName(), isOverlay);
  158.                                 if (!flag) {
  159.                                         break;
  160.                                 }
  161.                         }
  162.                 }
  163.                 if (!flag) {
  164.                         System.out.println("目录" + sourceDirName + "移动到" + targetDirName
  165.                                         + "失败!");
  166.                         return false;
  167.                 }
  168.                 // 删除原目录
  169.                 if (Demo5.deleteDir(sourceDirName)) {
  170.                         System.out.println("目录" + sourceDirName + "移动到" + targetDirName
  171.                                         + "成功!");
  172.                         return true;
  173.                 } else {
  174.                         System.out.println("目录" + sourceDirName + "移动到" + targetDirName
  175.                                         + "失败!");
  176.                         return false;
  177.                 }
  178.         }

  179.         public static void main(String[] args) {
  180.                 // 移动文件,如果目标文件存在,则替换
  181.                 System.out.println("调用moveA_File方法的结果如下:");
  182.                 String sourceFileName = "D:\\temp\\keytoolcmd.txt";
  183.                 String targetFileName = "D:\\test\\temp\\keytoolcmd.txt.";
  184.                 Demo6.moveA_File(sourceFileName, targetFileName, true);
  185.                 // 移动目录,如果目标目录存在,则不覆盖
  186.                 System.out.println("\n调用moveDir方法的结果如下:");
  187.                 String sourceDirName = "D:\\temp\\aa";
  188.                 String targetDirName = "F:\\abc";
  189.                 Demo6.moveDir(sourceDirName, targetDirName);
  190.         }
  191. }
复制代码

感兴趣的可以敲一下


作者: 范靖明    时间: 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