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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 非5莫属 中级黑马   /  2014-7-10 15:45  /  1498 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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){
                                       
                                }
                }
        }
}

9 个回复

倒序浏览
楼主把要复制的java文件的绝对路径写上 如E:/Test1.java
回复 使用道具 举报
790324255a 发表于 2014-7-10 17:29
楼主把要复制的java文件的绝对路径写上 如E:/Test1.java

不行啊!:dizzy:
回复 使用道具 举报
应该是顺序错了吧,还没读就写了,
fw=new FileWriter("Test1_copy.txt");放到下面去试试,而且这做的也不合题意吧
回复 使用道具 举报
本帖最后由 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文件,我自己临时写的一个,你参考一下!
回复 使用道具 举报
idency 发表于 2014-7-11 08:24
楼主,题目要求是所有的.java文件都要复制和改名,所以要获取源文件夹下的所有文件并判断是否是.java文件; ...

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

谢谢!!!
回复 使用道具 举报

我测试过了是行得通的
回复 使用道具 举报
你的catch中捕获了异常,没有打出异常信息,修改一下代码
e.printStackTrace();//打印异常信息
throw new RuntimeException("读写失败");
在抛出前加入代码,看看有没有异常信息,贴出来看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马