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

本帖最后由 Kevin.Kang 于 2015-7-23 17:25 编辑

得到指定目录下指定格式的文件方案1:
  1. package com.kxg.file;

  2. import java.io.File;

  3. /*
  4. * 需求:判断D盘下Test文件夹下是否有.txt结尾的文件
  5. */
  6. public class FileDemo7 {
  7.         public static void main(String[] args) {

  8.                 // 封装D:\Test目录
  9.                 File f = new File("D:\\Test");

  10.                 // 得到此目录下所有的文件和文件夹对象
  11.                 File[] arr = f.listFiles();

  12.                 // 遍历得到所有的File对象
  13.                 for (File file : arr) {
  14.                         // 判断对象是否是文件
  15.                         if (file.isFile()) {
  16.                                 // 如果是文件,就得到文件名判断是不是以.txt结尾
  17.                                 if (file.getName().endsWith(".txt")) {
  18.                                         // 如果是就输出文件名
  19.                                         System.out.println(file.getName());
  20.                                 }
  21.                         }
  22.                 }
  23.         }
  24. }
复制代码




13 个回复

正序浏览
回复 使用道具 举报
清空指定文件夹内容:
  1. package com.kxg;

  2. import java.io.File;

  3. /*
  4. * 需求:删除带指定目录(带内容)
  5. */
  6. public class FileDeleteDemo2 {
  7.         static String s = "D:\\Test\\Test2";
  8.         public static void main(String[] args) {
  9.                 // 删除Test2文件夹
  10.                 File file = new File(s);

  11.                 delete(file);
  12.         }

  13.         private static void delete(File file) {
  14.                 // 得到目录下文件夹和文件的File对象
  15.                 File[] fileArray = file.listFiles();
  16.                 if (fileArray != null)
  17.                 // 遍历File对象
  18.                         for (File f : fileArray) {
  19.                         // 判断是否为文件夹
  20.                         if (f.isDirectory()) {
  21.                                 // 是就作为对象重新传入
  22.                                 delete(f);

  23.                                 // 不是就删除并打印出删除文件的名字
  24.                         } else {
  25.                                 System.out.println(f.getName() + "====" + f.delete());
  26.                         }
  27.                 }
  28.                         // 删除完所有的文件以后只留下空的文件夹,当空文件夹作为File对象传入时就可以直接删除了
  29.                 if (!s.endsWith(file.getAbsolutePath()))
  30.                 System.out.println(file.getName() + "===" + file.delete());
  31.         }
  32. }
复制代码



回复 使用道具 举报
本帖最后由 Kevin.Kang 于 2015-7-24 14:27 编辑

删除文件夹(带内容):
  1. package com.kxg;

  2. import java.io.File;

  3. /*
  4. * 需求:删除指定目录(带内容)
  5. */
  6. public class FileDeleteDemo {
  7.         public static void main(String[] args) {
  8.                 // 删除Test2文件夹
  9.                 File file = new File("D:\\Test\\Test2");

  10.                 delete(file);
  11.         }

  12.         private static void delete(File file) {
  13.                 // 得到目录下文件夹和文件的File对象
  14.                 File[] fileArray = file.listFiles();

  15.                 // 遍历File对象
  16.                 for (File f : fileArray) {
  17.                         System.out.println(f.getName());
  18.                         // 判断是否为文件夹
  19.                         if (f.isDirectory()) {
  20.                                 // 是就作为对象重新传入
  21.                                 delete(f);

  22.                                 // 不是就删除并打印出删除文件的名字
  23.                         } else {
  24.                                 System.out.println(f.getName() + "====" + f.delete());
  25.                         }
  26.                 }
  27.                 // 删除完所有的文件以后只留下空的文件夹,当空文件夹作为File对象传入时就可以直接删除了
  28.                 System.out.println(file.getName() + "===" + file.delete());
  29.         }
  30. }
复制代码



回复 使用道具 举报
获取指定目录下所有格式或指定格式的文件:
  1. package com.kxg;

  2. import java.io.File;

  3. /*
  4. * 需求:递归求出D:\Demo目录下所有.java文件
  5. */
  6. public class FilePathDemo {
  7.         public static void main(String[] args) {

  8.                 // 封装目录
  9.                 File file = new File("D:\\Demo");
  10.                 getAllJava(file);
  11.         }

  12.         private static void getAllJava(File file) {
  13.                 // 得到全部文件夹和文件的File数组
  14.                 File[] fileArray = file.listFiles();

  15.                 // 遍历所有的File对象
  16.                 for (File f : fileArray) {

  17.                         // 判断是否为文件夹
  18.                         if (f.isDirectory()) {

  19.                                 // 是文件夹就把这个File对象重新传入到这个方法中
  20.                                 // 继续得到这个文件夹中的全部文件夹和文件的File对象
  21.                                 getAllJava(f);

  22.                                 // 除了文件夹就是文件,得到File对象的名字判断是否以.java结尾,是就输出绝对路径
  23.                         } else if (f.getName().endsWith(".java")) {
  24.                                 System.out.println(f.getAbsolutePath());
  25.                         }
  26.                 }
  27.         }
  28. }
复制代码



回复 使用道具 举报
目前脑子一片空白,概念记不住,代码重复敲
回复 使用道具 举报
好的很感谢你 加个好友吧,以后有什么就多请教你啦
回复 使用道具 举报
星空1990211 发表于 2015-7-23 18:15
自己在基础班学习,班里有好多的大神,自己这次考试都没有及格,自己感觉都会,代码敲也能想起来,考的选 ...

这个,你是不是总结的不到位?每天都定一个学习计划,将你每天的收获记录下来,抽空就看看
回复 使用道具 举报
王文辉 发表于 2015-7-23 18:08
不要感觉自己笨什么的,用的多了见得多了自然就会用了

自己在基础班学习,班里有好多的大神,自己这次考试都没有及格,自己感觉都会,代码敲也能想起来,考的选择题让自己都哭了。自己想努力不知道基础需要掌握到什么地步呀。
回复 使用道具 举报
星空1990211 发表于 2015-7-23 18:01
有点深,感觉自己有点笨不知道是死记代码还是应该注意抓思想,自己的思想不是很灵活 ...

不要感觉自己笨什么的,用的多了见得多了自然就会用了
回复 使用道具 举报
有点深,感觉自己有点笨不知道是死记代码还是应该注意抓思想,自己的思想不是很灵活
回复 使用道具 举报
批量修改同一格式文件的文件名:(这些文件名需要有规律)

  1. package com.kxg.file;

  2. import java.io.File;

  3. /*
  4. * 需求:把D:\Test\四大名著目下
  5. *                 001_Hello_world_请修改我_西游记.txt
  6. *                002_Hello_world_请修改我_三国演义.txt
  7. *                003_Hello_world_请修改我_水浒传.txt
  8. *                004_Hello_world_请修改我_红楼梦.txt
  9. * 改为:
  10. *                 001_西游记.txt
  11. *                002_三国演义.txt
  12. *                003_水浒传.txt
  13. *                004_红楼梦.txt
  14. */
  15. public class FileDemo9 {
  16.         public static void main(String[] args) {
  17.                 // 封装目录
  18.                 File file = new File("D:\\Test\\四大名著\\");

  19.                 // 获取文件对象数组
  20.                 File[] arr = file.listFiles();

  21.                 // 遍历所有对象
  22.                 for (File f : arr) {
  23.                         // 获取每个文件的名字
  24.                         String name = f.getName();

  25.                         // 查找第一个_的索引,并从开始截取到次索引处获取前面的001,002,003,004
  26.                         int start = name.indexOf("_");
  27.                         String startName = name.substring(0, start);
  28.                         // 可以简化为 String start = name.substring(0, name.indexOf("_"));

  29.                         // 查找最后一个_的索引,并以这个索引为开始,截取到字符串末尾。得到_和四大名著名称。
  30.                         int end = name.lastIndexOf("_");
  31.                         String endName = name.substring(end);
  32.                         // 可以简化为 String end = name.substring(name.lastIndexOf("_"));

  33.                         // 把截取好的两个字符串拼接起来,就是需要改的文件名称。
  34.                         String newName = startName.concat(endName);

  35.                         // 把新的名称封装成File对象,千万不要忘记加上前面的目录。
  36.                         File newFile = new File(file, newName);

  37.                         // 给每个File对象重命名
  38.                         f.renameTo(newFile);
  39.                         System.out.println(f.getName());
  40.                 }
  41.         }
  42. }
复制代码



回复 使用道具 举报
方案2:过滤器
  1. package com.kxg.file;

  2. import java.io.File;
  3. import java.io.FilenameFilter;

  4. /*
  5. * FilenameFilter接口:实现此接口的类实例可用于过滤器文件名
  6. *                 public String[] list(FilenameFilter filter):获取符合过滤器的文件名数组
  7. *                 public File[] listFiles(FilenameFilter filter):获取符合过滤器的文件对象数组
  8. */
  9. public class FileDemo8 {
  10.         public static void main(String[] args) {

  11.                 // 封装D:\Test目录
  12.                 File f = new File("D:\\Test");

  13.                 // 得到此目录下所有的文件和文件夹对象
  14.                 File[] arr = f.listFiles(new FilenameFilter() {

  15.                         @Override
  16.                         public boolean accept(File dir, String name) {
  17.                                 // System.out.println(dir + "..." + name);
  18.                                 // 输出参数中的dir和name得知,dir是目录,name是文件夹和文件名
  19.                                 // 通过File的构造方法得到所有的f对象
  20.                                 File f = new File(dir, name);
  21.                                 // 判断是否文件
  22.                                 boolean flag = f.isFile();
  23.                                 // 判断是否以.txt结尾
  24.                                 boolean flag2 = f.getName().endsWith(".txt");
  25.                                 // 综合前面两个的结果,如果是true就加入到数组中去
  26.                                 boolean flag3 = flag && flag2;
  27.                                 return flag3;
  28.                                 // 可以简化为:return new File(dir, name).isFile() &&
  29.                                 // name.endsWith(".txt");
  30.                         }
  31.                 });

  32.                 // 遍历得到所有的File对象
  33.                 for (File file : arr) {
  34.                                         System.out.println(file.getName());
  35.                 }
  36.         }
  37. }
复制代码



回复 使用道具 举报
顶一下,,,,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马