黑马程序员技术交流社区

标题: 请大家帮忙看下这段代码问题出在哪儿? [打印本页]

作者: 杜成龙    时间: 2013-10-15 00:44
标题: 请大家帮忙看下这段代码问题出在哪儿?
本帖最后由 杜成龙 于 2013-10-15 09:40 编辑

我设计了一段代码,目的是想把指定目录下的所有.java文件复制指定的另外一个目录下,并且将对应的后缀名改成.txt,
但是我设计的代码却出现了问题,可我觉得挺对的,就是找不出错误,还请高手指教一下!谢谢!代码如下:
  1. package cn.itcast.day05;

  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.FilenameFilter;
  6. import java.io.PrintWriter;

  7. public class CopyDemo {

  8. public static void main(String[] args) {
  9. String srcDir=args[0];
  10. String desDir=args[1];
  11. copyFile(srcDir,desDir);
  12. }
  13. public static void copyFile(String src,String des){
  14. File srcFile=new File(src);
  15. String[] arr=srcFile.list(new FilenameFilter(){
  16. public boolean accept(File dir,String name){
  17. return name.endsWith(".java");
  18. }
  19. });
  20. for(int i=0;i<arr.length;i++){
  21. String desName=arr[i].substring(0, arr[i].lastIndexOf('.'))+".txt";
  22. readAndWrite(src+arr[i],des+desName);
  23. }
  24. }
  25. public static void readAndWrite(String in,String out){
  26. BufferedReader bufr=null;
  27. PrintWriter pw=null;
  28. try{
  29. bufr=new BufferedReader(new FileReader(in));
  30. pw=new PrintWriter(out);
  31. String line=null;
  32. while((line=bufr.readLine())!=null){
  33. pw.println(line);
  34. pw.flush();
  35. }
  36. }
  37. catch(Exception e){
  38. throw new RuntimeException("文件读取写入失败");
  39. }
  40. finally{
  41. if(pw!=null)
  42. pw.close();
  43. if(bufr!=null)
  44. try{
  45. bufr.close();
  46. }
  47. catch(Exception e){
  48. throw new RuntimeException("读取流关闭失败");
  49. }
  50. }
  51. }
  52. }
复制代码


作者: 神之梦    时间: 2013-10-15 01:05
错误提示是什么?你传入的是目录的路径对吧,目录加文件名时需要这样“/”的符号,你有写没?由于爪机,不方便测试,你看下我说的
作者: bird_not_fat    时间: 2013-10-15 09:29
打个比方如果d盘test下有aaa.java,bbb.java等,你输入d:\\test,那你readAndWrite(src + arr, des + desName);得到的是  d:\\testaaa.java,没有分隔符!当然你输入路径d:\\test\\就肯定没问题了。
你可以加一个判断 判断拼成的字符串是不是存在的文件,如果不是,中间加上分隔符
  1. for (int i = 0; i < arr.length; i++) {
  2.                         String desName = arr[i].substring(0, arr[i].lastIndexOf('.'))
  3.                                         + ".txt";
  4.                         String srcStr = src + arr[i];
  5.                         String desStr = des + desName;
  6.                         File srcfile = new File(srcStr);
  7.                         File desfile = new File(srcStr);
  8.                         if(!srcfile.exists()){
  9.                                 srcStr = src + File.separator + arr[i];
  10.                         }
  11.                         if(!desfile.exists()){
  12.                                 desStr = des + File.separator + desName;
  13.                         }
  14.                         readAndWrite(srcStr, desStr);
  15.                 }
复制代码
你试试~哈哈
作者: 杜成龙    时间: 2013-10-15 09:34
谢谢你们,我知道了!




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