黑马程序员技术交流社区

标题: 求大神指教为什么没有成功 [打印本页]

作者: 非5莫属    时间: 2014-7-10 15:45
标题: 求大神指教为什么没有成功
package com.itheima;
/*9、 编写程序,将指定目录下所有.java文件拷贝到另一个目的中,并将扩展名改为.txt*/
import java.io.*;
public class Test9 {
        public static void main(String[] args){
                copy();
        }
       
        public static void copy(){
                FileWriter fw=null;
                FileReader fr=null;
                try{
                        fw=new FileWriter("Test1_copy.txt");
                        fr=new FileReader("Test1.java");
                        char[] buf=new char[1024];
                        int len=0;
                        while((len=fr.read(buf))!=-1){
                                fw.write(buf,0,len);
                        }
                }
                catch(IOException e){
                        throw new RuntimeException("读写失败");
                }
                finally{
                        if(fr!=null)
                                try{
                                        fr.close();
                                }
                                catch(IOException e){
                                       
                                }
                        if(fw!=null)
                                try{
                                        fw.close();
                                }
                                catch(IOException e){
                                       
                                }
                }
        }
}

作者: 790324255a    时间: 2014-7-10 17:29
楼主把要复制的java文件的绝对路径写上 如E:/Test1.java
作者: 非5莫属    时间: 2014-7-10 22:55
790324255a 发表于 2014-7-10 17:29
楼主把要复制的java文件的绝对路径写上 如E:/Test1.java

不行啊!:dizzy:
作者: ソi苆僞lè袮    时间: 2014-7-11 03:14
应该是顺序错了吧,还没读就写了,
fw=new FileWriter("Test1_copy.txt");放到下面去试试,而且这做的也不合题意吧
作者: idency    时间: 2014-7-11 08:24
本帖最后由 idency 于 2014-7-11 08:26 编辑
  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;

  7. public class Test {
  8.         public static void main(String[] args) throws IOException {

  9.                
  10.                 //定义一个字符串,用于接收要复制的文件夹
  11.                 String srcdir = "C:\\Users\\Administrator\\Desktop\\新建文件夹";
  12.                
  13.                
  14.                 //定义一个字符串,用于接收目标文件夹
  15.                 String desdir = "c:\\新建文件夹";
  16.                
  17.                 //创建文件对象
  18.                 File f = new File(srcdir);
  19.                 File d=new File(desdir);
  20.                
  21.                 //创建目标文件夹
  22.                 d.mkdir();

  23.                 //获取源文件夹下的所有文件的文件名
  24.                 String[] lfs = f.list();
  25.                
  26.                 //判断文件名是否以".java"结尾
  27.                 for (String file : lfs) {
  28.                         if (file.endsWith(".java")) {
  29.                                 
  30.                                 //构建文件目录字符串
  31.                                 String srcName=srcdir + "\\"+file;
  32.                                 
  33.                                 //创建输入流并关联输入文件地址
  34.                                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcName));
  35.                                 
  36.                                 //创建一个字符串,用于表示修改后缀名后的文件地址
  37.                                 String name = file.substring(0, file.lastIndexOf("."));
  38.                                 String desName = desdir + "\\" + name + ".txt";
  39.                                 
  40.                                 //创建输出流并关联输出地址
  41.                                 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(desName));
  42.                                 
  43.                                 //开始读写操作
  44.                                 int len=-1;
  45.                                 byte[] b=new byte[1024];
  46.                                 while((len=bis.read(b))!=-1){
  47.                                         bos.write(b, 0, len);
  48.                                 }
  49.                                 
  50.                                 //关闭流对象,释放资源
  51.                                 bis.close();
  52.                                 bos.close();
  53.                         }
  54.                 }
  55.         }
  56. }
复制代码



楼主,题目要求是所有的.java文件都要复制和改名,所以要获取源文件夹下的所有文件并判断是否是.java文件;楼主你写的好像并没有判断是否是.java文件,我自己临时写的一个,你参考一下!
作者: yangcy    时间: 2014-7-11 09:41
idency 发表于 2014-7-11 08:24
楼主,题目要求是所有的.java文件都要复制和改名,所以要获取源文件夹下的所有文件并判断是否是.java文件; ...

赞一个。
作者: yanyoucheng520    时间: 2014-7-11 11:02
while((len=fr.read(buf))!=-1) 此句出现错误,括号里的buf应该要去掉吧,因为这是buf里并没有内容,接下来才会存储到char类型的buf字符数组里面
作者: 非5莫属    时间: 2014-7-11 11:59
idency 发表于 2014-7-11 08:24
楼主,题目要求是所有的.java文件都要复制和改名,所以要获取源文件夹下的所有文件并判断是否是.java文件; ...

谢谢!!!
作者: 790324255a    时间: 2014-7-11 13:11
非5莫属 发表于 2014-7-10 22:55
不行啊!

我测试过了是行得通的
作者: 刘一博    时间: 2014-7-11 13:44
你的catch中捕获了异常,没有打出异常信息,修改一下代码
e.printStackTrace();//打印异常信息
throw new RuntimeException("读写失败");
在抛出前加入代码,看看有没有异常信息,贴出来看看




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2