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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© l落落落叶 中级黑马   /  2015-4-28 07:41  /  1165 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

编写一个程序,我想把这个目录下的所有的带.java文件拷贝到另一个目录中,拷贝成功以后,把后缀名是.java改成.txt

11 个回复

正序浏览
哥们儿你这样高调提问很容易被管理员发现屏蔽的;P,答案在这,这是替你加的注释版赶快收藏:handshake
  1. package com.itheima;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.File;
  5. import java.io.FileReader;
  6. import java.io.FileWriter;
  7. import java.io.FilenameFilter;
  8. import java.io.IOException;


  9. /**
  10. * 1,编写一个程序,我想把这个目录下的所有带.java文件拷贝到另一个目录下,拷贝成功以后把后缀名是.java改成.txt
  11. * @author wfq
  12. *
  13. */
  14. public class Test {

  15.         public static void main(String[] args) throws IOException {
  16.                 //文件所在文件夹
  17.                 File file = new File("tempfile\\");
  18.                 //目标文件夹
  19.                 File file2 = new File("tempfile\\abc\\");
  20.                
  21.                 copyDemo(file,file2);
  22.                
  23.                
  24.         }

  25.         public static void copyDemo(File file, File targ){
  26.                 //判断访问的目录是否存在
  27.                 if(file==null)
  28.                         throw new NullPointerException("访问的目录不存在..");
  29.                 //对目标目录进行判断,如果不存在就创建
  30.                 if (!targ.exists()) {
  31.                         targ.mkdir();
  32.                 }
  33.                 //列出访问目录下所有符合过滤条件的文件
  34.                 File[] files = file.listFiles(new FilterByName());
  35.                 //创建读写流复制文件
  36.                 BufferedReader bfr = null;
  37.                 BufferedWriter bfw = null;
  38.                
  39.                
  40.                    try {
  41.                             for (File file2 : files) {
  42.                                bfr = new BufferedReader(new FileReader(file2));
  43.                                //利用正则表达式修改复制后的文件名
  44.                                bfw = new BufferedWriter(new FileWriter(new File(targ,file2.getName().replaceAll("\\.java", ".txt"))));
  45.                        
  46.                           String len = null;
  47.                           while ((len=bfr.readLine())!=null) {
  48.                                   bfw.write(len);
  49.                                   bfw.newLine();
  50.                                   bfw.flush();
  51.                                }
  52.                        }
  53.                 }catch (IOException e) {
  54.                 }finally {
  55.                         if(bfr!=null)
  56.                         try {
  57.                                 bfr.close();
  58.                         } catch (IOException e) {
  59.                                 // TODO Auto-generated catch block
  60.                                 e.printStackTrace();
  61.                         }
  62.                         if(bfw!=null)
  63.                         try {
  64.                                 bfw.close();
  65.                         } catch (IOException e) {
  66.                                 // TODO Auto-generated catch block
  67.                                 e.printStackTrace();
  68.                         }
  69.                 }
  70.                   
  71.         }
  72. }
  73. //.java文件的过滤器
  74. class FilterByName implements FilenameFilter{
  75.         @Override
  76.         public boolean accept(File dir, String name) {
  77.                
  78.                 return name.endsWith(".java");
  79.         }
  80.        
  81. }
复制代码
回复 使用道具 举报
是面试题吗?这得写多少代码!
回复 使用道具 举报
yearn 中级黑马 2015-4-28 16:25:47
9#
还没看到IO这里呢!
回复 使用道具 举报
l落落落叶 来自手机 中级黑马 2015-4-28 10:43:43
8#
找到解决办法了,还是练的少,感觉脑子不够用啊
回复 使用道具 举报
:o还没看到。。感觉好复杂

点评

感觉脑子转不过来弯,以后可能悲催了  发表于 2015-4-28 10:45
回复 使用道具 举报
class DemoTest{
         public static void main(String[] args){
         showFile();
         }
         public static void showFile(){
                File file = new File("E:\\Exam\\src\\com\\itheima");
                String[] str = file.list();
                for(String strs:str ){
                       
                        System.out.println(strs.replaceAll(".java", ".txt"));
                }
        }
}

运行结果
Test1.txt
Test10.txt
Test2.txt
Test3.txt
Test4.txt
Test5.txt
Test6.txt
Test7.txt
Test8.txt
Test9.txt
回复 使用道具 举报
l落落落叶 来自手机 中级黑马 2015-4-28 09:11:54
报纸
是不是用递归把目录中的文件打印到一个文本文件
回复 使用道具 举报
额,考的就是这题
思路是查找目录下java文件时使用过滤器,然后复制到新目录时获取该文件名用replace改名存储,就是这样了。

ps:我当时运行没出来。。。囧
回复 使用道具 举报

回去看IO流视频吧。
回复 使用道具 举报
回去看IO流视频吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马