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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐志海 中级黑马   /  2014-2-7 03:35  /  1513 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐志海 于 2014-2-7 12:02 编辑

为什么会出现没找到文件的错误。文件时存在的。。
  1. import java.io.File;
  2. import java.io.FileInputStream;

  3. import java.io.FileOutputStream;
  4. import java.io.IOException;

  5. public class copyFile {

  6.         //static String source="G:\\tupian";
  7.         
  8.         //static String target="d:\\tupianCopy";
  9.         public static void main(String[] args) throws IOException {
  10.                
  11.                 File SourceDir=new File("G:\\tupian");
  12.                 File targetFile=new File("d:\\tupianCopy");
  13.                 System.out.println(targetFile.mkdirs());
  14.                 copy(SourceDir,targetFile);

  15.         }
  16.         public static void copy(File Sourcedir,File targetFile) throws IOException
  17.         {
  18.                
  19.                 //new File("G:\\tupianCopy").mkdirs();
  20.                 File[] file=Sourcedir.listFiles();
  21.                 for(File ff:file)
  22.                 {
  23.                         if(!ff.isHidden()&&ff.isDirectory())
  24.                                 {
  25.                                         targetFile=new File(targetFile.getAbsoluteFile()+File.separator+ff.getName());//目标文件夹
  26.                                         targetFile.mkdirs();//创建目标文件夹
  27.                                         copy(ff,targetFile);
  28.                                 }
  29.                                 
  30.                         else
  31.                         {
  32.                                 FileInputStream fis=new FileInputStream(Sourcedir);
  33.                                 FileOutputStream fio=new FileOutputStream(targetFile);
  34.                                 int num=0;
  35.                                 while((num=fis.read())!=-1)
  36.                                 {
  37.                                         fio.write(num);
  38.                                        
  39.                                 }
  40.                                 fio.close();
  41.                         }
  42.                         
  43.                                 
  44.                                 
  45.                 }
  46.         }

  47. }
复制代码


点评

Don
29行: targetFile.getName(),这个只获取文件名,没带路径的  发表于 2014-2-7 03:49

评分

参与人数 1技术分 +1 收起 理由
黄晓东 + 1

查看全部评分

6 个回复

正序浏览
咳,昨天真晕菜了。。。IO读取的时候是目录,难怪会出现错误。。这是修改后的代码
  1. import java.io.File;
  2. import java.io.FileInputStream;

  3. import java.io.FileOutputStream;
  4. import java.io.IOException;

  5. public class copyFile {

  6.         static String source="G:\\tupian";
  7.        
  8.         static String target="d:\\tupianCopy";
  9.         public static void main(String[] args) throws IOException {
  10.                
  11.                 File SourceDir=new File(source);
  12.                 File targetFile=new File(target);
  13.                
  14.                
  15.                 System.out.println(targetFile.mkdirs());
  16.                 copy(SourceDir,targetFile);

  17.         }
  18.        
  19.         public static void copy(File Sourcedir,File targetFile) throws IOException
  20.         {
  21.                
  22.                
  23.                 File[] file=Sourcedir.listFiles();
  24.                 for(int x=0;x<file.length;x++ )
  25.                 {
  26.                         if(!file[x].isHidden()&&file[x].isDirectory())
  27.                                 {
  28.                                         File sourcedir=new File(Sourcedir.getAbsoluteFile()+File.separator+file[x].getName());
  29.                                         File targetFile2=new File(targetFile.getAbsoluteFile()+File.separator+file[x].getName());//目标文件夹
  30.                                         targetFile2.mkdirs();//创建目标文件夹
  31.                                         copy(sourcedir,targetFile2);
  32.                                 }
  33.                                
  34.                         else
  35.                         {
  36.                                 File sourceFile=new File(Sourcedir+File.separator+file[x].getName());
  37.                                 File targetFile2=new File(targetFile.getAbsoluteFile()+File.separator+file[x].getName());
  38.                        
  39.                                 FileInputStream fis=new FileInputStream(sourceFile);
  40.                                 FileOutputStream fio=new FileOutputStream(targetFile2);
  41.                                 int num=0;
  42.                                 while((num=fis.read())!=-1)
  43.                                 {
  44.                                         fio.write(num);
  45.                                        
  46.                                 }
  47.                                 fio.close();
  48.                                
  49.                         }
  50.                        
  51.                                
  52.                                
  53.                 }
  54.         }

  55. }
复制代码
回复 使用道具 举报
唐志海 发表于 2014-2-7 03:56
修改成targetFile.getAbsoluteFile()还是错误。。。

您看下,现在错误时这样子的,帮忙解决一下
  1. Exception in thread "main" java.io.FileNotFoundException: G:\tupian (拒绝访问。)
  2.         at java.io.FileInputStream.open(Native Method)
  3.         at java.io.FileInputStream.<init>(FileInputStream.java:106)
  4.         at File.copyFile.copy(copyFile.java:57)
  5.         at File.copyFile.main(copyFile.java:28)
复制代码
回复 使用道具 举报
java.io.FileNotFoundException。。。我的文件是存在的
回复 使用道具 举报
修改成targetFile.getAbsoluteFile()还是错误。。。

点评

Don
错误是什么呢?  发表于 2014-2-7 03:58
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马