A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭卫红 中级黑马   /  2014-8-30 22:52  /  1197 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码

感兴趣的可以敲一下

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 很给力!

查看全部评分

9 个回复

倒序浏览
我今晚才开始学Io感觉进度好慢啊,在由于哟啊不要辞职呢
回复 使用道具 举报
范靖明 发表于 2014-8-30 23:20
我今晚才开始学Io感觉进度好慢啊,在由于哟啊不要辞职呢

想跟你说,我现在刚刚辞职。
回复 使用道具 举报
唉 时间啊时间 真不够
回复 使用道具 举报
我已经辞职了,下周就不上班了。感觉去年一年都荒废了。。。根本就没学到什么东西。也怪自己。
回复 使用道具 举报
好详细的代码,可以做参考了,呵呵
回复 使用道具 举报
我正研究九月辞职呢!时间真心不够!
回复 使用道具 举报
这个代码格式怎么弄的?
回复 使用道具 举报
本来我是月底辞职的  谁知道公司还没招来人,得等到9.7号才能走
回复 使用道具 举报
得辞职好好学
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马