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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 碎流 高级黑马   /  2014-8-30 22:07  /  1688 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

批量修改一个文件夹 里java后缀名改为txt......我用string改不了,求思路

8 个回复

倒序浏览
获取文件
去文件名:使用subString方法获取(0,文件名.lastIndexOf("\\."))
加文件名:   +".txt";
回复 使用道具 举报
这个有好几种方法,string,就算把文件名和后缀分开,然后参照1楼,还有 就算file用rename也能改
回复 使用道具 举报
  1. 找出d盘下所有的 .java 文件,拷贝至 c:\jad 目录下,并将所有文件的类型由.java 修改为.jad 。
  2. public class test {
  3.         public static void main(String[] args) {
  4.                 File f1 = new File("d:\\");
  5.                 moveFile(f1);
  6.         }

  7.         public static void moveFile(File dir) {
  8.                 File[] files = dir.listFiles();
  9.                 for (File file : files) {
  10.                         if (file.isDirectory())
  11.                                 moveFile(file);
  12.                         else {
  13.                                 if (file.getName().endsWith(".java"))
  14.                                         file.renameTo(new File("c:\\jad\\"
  15.                                                         + file.getName().substring(0,
  16.                                                                         file.getName().lastIndexOf('.')) + ".jad"));
  17.                         }
  18.                 }
  19.         }
  20. }
  21. 用rename修改后缀
复制代码
回复 使用道具 举报
笑脸迷人 发表于 2014-8-30 22:15
获取文件
去文件名:使用subString方法获取(0,文件名.lastIndexOf("\\."))
加文件名:   +".txt";

谢谢,不过好像不可以,,,
回复 使用道具 举报
板凳的很好啊
回复 使用道具 举报
本帖最后由 彭卫红 于 2014-8-30 23:38 编辑
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.FilenameFilter;
  7. import java.io.IOException;
  8. public class CopyFolderTest {
  9. public static void main(String[] args) throws IOException {
  10.   // 封装数据源和目的地
  11.   File file1 = new File("d:\\Java");
  12.   File file2 = new File("d:\\jad");
  13.   // 文件过滤器封装目录下String数组对象,匿名对象
  14.   String[] strArr = file1.list(new FilenameFilter() {
  15.    @Override
  16.    public boolean accept(File dir, String name) {
  17.     // 判断条件文件和后缀
  18.     return new File(dir, name).isFile() && name.endsWith(".java");
  19.    }
  20.   });
  21.   // 遍历
  22.   for (String str : strArr) {
  23.    // 输入流,封装符合条件的数据源
  24.    BufferedReader br = new BufferedReader(new FileReader(
  25.    new File(file1, str)));
  26.    // 输出流,改名并封装要装入的目的地
  27.    BufferedWriter bw = new BufferedWriter(new FileWriter(
  28.    new File(file2, str.replace(".java", ".jad"))));
  29.    // 遍历读写文件
  30.    String line = null;
  31.    while ((line = br.readLine()) != null) {
  32.     bw.write(line);
  33.     bw.newLine();
  34.     bw.flush();
  35.    }
  36.    br.close();
  37.    bw.close();
  38.   }
  39. }
  40. }
复制代码



评分

参与人数 1黑马币 +5 收起 理由
碎流 + 5 辛苦~

查看全部评分

回复 使用道具 举报
用string改后缀

  1. package 多发点;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.FilenameFilter;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.io.OutputStream;

  9. public class Jad2Java {

  10.         public static void main(String[] args) throws Exception {
  11.                 File srcDir = new File("java");
  12.                 if (!(srcDir.exists() && srcDir.isDirectory()))
  13.                         throw new Exception("目錄不存在");
  14.                 File[] files = srcDir.listFiles(new FilenameFilter() {

  15.                         public boolean accept(File dir, String name) {
  16.                                 return name.endsWith(".java");
  17.                         }

  18.                 });

  19.                 System.out.println(files.length);
  20.                 File destDir = new File("jad");
  21.                 if (!destDir.exists())
  22.                         destDir.mkdir();
  23.                 for (File f : files) {
  24.                         FileInputStream fis = new FileInputStream(f);
  25.                         String destFileName = f.getName().replaceAll("\\.java$", ".jad");
  26.                         FileOutputStream fos = new FileOutputStream(new File(destDir,
  27.                                         destFileName));
  28.                         copy(fis, fos);
  29.                         fis.close();
  30.                         fos.close();
  31.                 }
  32.         }

  33.         private static void copy(InputStream ips, OutputStream ops)
  34.                         throws Exception {
  35.                 int len = 0;
  36.                 byte[] buf = new byte[1024];
  37.                 while ((len = ips.read(buf)) != -1) {
  38.                         ops.write(buf, 0, len);
  39.                 }

  40.         }
  41. }
复制代码
回复 使用道具 举报
7楼直接用replace这样修改文件名会出问题,万一文件名是xxx.java.java.java呢!或是 javaxxxx.java
最好的还是lastIndexOf,或是将文件名按"\\."分割,然后在组合文件名
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马