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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

提示: 该帖被管理员或版主屏蔽

10 个回复

倒序浏览
             DOS访问的跟eclipse访问的根本不是一个路径。怎么可能能找到指定文件。。。。
回复 使用道具 举报
自己已经解决了,是因为在复制的方法中没有获取源文件路径,只获取了一个文件名,所以导致源文件获取失败,修改了一下复制方法,接收一个源文件路径
  1. /
  2. package com.itheima;
  3. import java.io.*;
  4. import java.util.*;
  5. class  Test9
  6. {
  7.         public static void main(String[] args)
  8.         {
  9.                 File fromFile=new File("E:\\test9");//制定一个源路径
  10.                 File toFile=new File("E:\\testCopy9");//定义一个目的路径
  11.                 List<String> list = new ArrayList<String>();//定义一个数组,用来存储获取源路径中的.java文件名
  12.                 searchFile(fromFile,list);//在源路径下查找符合条件的文件名,存储到数组中;

  13.                 Iterator<String> it=list.iterator();//通过数组迭代器获取文件名,进行文件复制
  14.                 while(it.hasNext())
  15.                 {
  16.                         String files=it.next();
  17.                         System.out.println(files);//这条输出语句可以检检差在查找、复制哪个文件是出现问题
  18.                         copyFile(fromFile,files,toFile);               
  19.                 }
  20.                 System.exit(0);
  21.         }
  22.         //定义一个查找文件方法,接收一个源目录和一个List集合
  23.        
  24.         public static void searchFile(File fromFile,List<String> list)
  25.         {
  26.                  if(fromFile.exists() && fromFile.isDirectory())//判断源路径下是不是存在文件并且这是一个有效路径
  27.                         {
  28.                                 File[] arr=fromFile.listFiles();//创建一个File型的数组,用来存储获取的文件列表
  29.                                 for(File files : arr)//使用高级for循环遍历数组
  30.                                 {
  31.                                         if(files.isDirectory())
  32.                                            searchFile(files,list);//如果获取到的文件还是一个目录则进行递归,进一步查找目录下的文件
  33.                                         else if(files.getName().endsWith(".java"))
  34.                                            list.add(files.getName());//如果是.java类型的文件则将文件名存储到数组中       
  35.                                         else
  36.                                                 continue;//如果遍历到的文件既不是文件夹也不是.java类型的文件,则结束本次循环,继续执行下一次循环遍历下一个文件

  37.                                 //System.out.println(list);
  38.                                 }
  39.                          }
  40.                  else
  41.                     System.out.println("源路径无效");
  42.         }
  43.        

  44.         //定义一个copy方法,接收一个源文件的文件名和一个目的文件
  45.     public static void copyFile(File fromFile,String from,File to)
  46.         {
  47.                
  48.             BufferedReader readFile = null ;
  49.             PrintWriter writeFile = null ;
  50.                 File fromFiles=new File(fromFile,from);
  51.                 //System.out.println(fromFiles);
  52.                 File toFile=new File(to,from.replace(".java",".txt"));
  53.                 //System.out.println(toFile);
  54.                 try
  55.                 {
  56.            //通过文件名建立一个文件关联,并且将FileReader对象作为参数传入字符读取缓冲区中,进行高效读取
  57.                
  58.                 readFile = new BufferedReader(new InputStreamReader(new FileInputStream(fromFiles)));               
  59.                 }
  60.         //给定一个目的存储目录,在这个目录下建立相应的复制后的文件,而且这个复制的目的文本文件名是将.java后缀替换成.txt的
  61.                 catch(IOException ie)
  62.                 {
  63.                         System.out.println("源文件获取失败");
  64.                 }
  65.                 try
  66.                 {
  67.                         writeFile = new PrintWriter(toFile);
  68.                 }
  69.             catch(IOException ie)
  70.             {
  71.                     System.out.println("目的文件获取失败");
  72.             }
  73.                
  74.             String line=null;
  75.             try
  76.             {
  77.                    
  78.                         while((line=readFile.readLine())!=null)//判断:如果读取流没有读到文件的结尾
  79.                         {                               
  80.                                 writeFile.println(line);//将读取到的内容写入到缓冲流中
  81.                         }
  82.                         System.out.println("复制文件成功");
  83.                        
  84.                 }
  85.                 catch (IOException e)
  86.                 {
  87.                         System.out.println("复制文件失败");
  88.                 }
  89.                 finally
  90.                 {
  91.                   try
  92.                   {
  93.                         if(readFile!=null)//如果关联被读取的文件成功,则在执行完毕后关闭该读取流
  94.                           readFile.close();  
  95.                         if(writeFile!=null)//如果写入流创建成功,则在执行完毕后关闭该写入流
  96.                                   writeFile.close();
  97.                        
  98.                   }
  99.                  catch (IOException e)
  100.                         {
  101.                                 System.out.println("流关闭失败");
  102.                         }
  103.                        
  104.                 }

  105.        
  106.         }
  107. }
复制代码
回复 使用道具 举报
你这是自言自语的节奏啊!
回复 使用道具 举报
过路人 发表于 2015-5-6 22:37
你这是自言自语的节奏啊!

找我大学老师解决的,在论坛发帖没人给我解决啊
回复 使用道具 举报
路径对不吗??
回复 使用道具 举报

嗯,原来的代码没有获取源路径,只获取了源文件名,所以会报异常,导致复制文件失败
回复 使用道具 举报
编译的时候注意dos命令提示行报的错是什么,根据错误提示就可以定位错误了
回复 使用道具 举报
roblonely 发表于 2015-5-8 09:34
编译的时候注意dos命令提示行报的错是什么,根据错误提示就可以定位错误了 ...

dos命令行没有报错,复制成功
回复 使用道具 举报
Dos就像是中国人, 吃麻辣烫顶多闹个肚子,但是, 外国人吃完麻辣烫直接送急诊抢救去了
回复 使用道具 举报
cui0wei0 发表于 2015-5-8 23:19
Dos就像是中国人, 吃麻辣烫顶多闹个肚子,但是, 外国人吃完麻辣烫直接送急诊抢救去了 ...

哈哈哈哈哈,精辟
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马