(java)帮忙看看这个程序的错误 ,提示 FileNotFoundException ,帮忙描述一下关键位置就更好了
packagecom.itheima.exam;importjava.io.*;/***建一个FileCopy类,用返回布尔类型来判定复制情况*中间有一个for循环来实现...
package com.itheima.exam;
import java.io.*;
/**
* 建一个FileCopy类 , 用返回布尔类型来判定复制情况
* 中间有一个for循环来实现对源文件的遍历;
* 用到的方法有 .exists()判定存在状况 ;getAbsolutePath()来获取 文件的路径
* */
public class TestCopy {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
FileCopy file = new FileCopy();
file.Copy("D:\\myhelp","E:\\AB");
}
}
class FileCopy{
public boolean Copy(String file3 ,String file4) throws Exception{
File in = new File(file3) ;
File out = new File(file4);
if(!(in.exists())){
System.out.println(in.getAbsolutePath()+"不存在");
}else{
System.out.println("源路径"+in.getAbsolutePath());
System.out.println("目标路径"+out.getAbsolutePath());
}
if(out.exists())
out.mkdirs();
File[] file = in.listFiles();
FileInputStream fis = null ;
FileOutputStream fos = null;
for(int i = 0 ;i<file.length ;i++){
if(file[i].isFile()){
fis = new FileInputStream(file[i]);
System.out.println( "in.name="+ file[i].getName());
fos = new FileOutputStream(new File(file4+"/"+file[i].getName()));
System.out.println(file4);
int c = 0;
byte[] xx =new byte[1024*5];
while((c=fis.read(xx))!=-1){
fos.write(xx ,0 ,c);
System.out.println("复制文件中");
}
fis.close();
fos.flush();
fos.close();
return true ;
}else
Copy(file3+"/"+file[i].getName(),file4+"/"+file[i].getName());
}
return false ;
}
} 展开
import java.io.*;
/**
* 建一个FileCopy类 , 用返回布尔类型来判定复制情况
* 中间有一个for循环来实现对源文件的遍历;
* 用到的方法有 .exists()判定存在状况 ;getAbsolutePath()来获取 文件的路径
* */
public class TestCopy {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
FileCopy file = new FileCopy();
file.Copy("D:\\myhelp","E:\\AB");
}
}
class FileCopy{
public boolean Copy(String file3 ,String file4) throws Exception{
File in = new File(file3) ;
File out = new File(file4);
if(!(in.exists())){
System.out.println(in.getAbsolutePath()+"不存在");
}else{
System.out.println("源路径"+in.getAbsolutePath());
System.out.println("目标路径"+out.getAbsolutePath());
}
if(out.exists())
out.mkdirs();
File[] file = in.listFiles();
FileInputStream fis = null ;
FileOutputStream fos = null;
for(int i = 0 ;i<file.length ;i++){
if(file[i].isFile()){
fis = new FileInputStream(file[i]);
System.out.println( "in.name="+ file[i].getName());
fos = new FileOutputStream(new File(file4+"/"+file[i].getName()));
System.out.println(file4);
int c = 0;
byte[] xx =new byte[1024*5];
while((c=fis.read(xx))!=-1){
fos.write(xx ,0 ,c);
System.out.println("复制文件中");
}
fis.close();
fos.flush();
fos.close();
return true ;
}else
Copy(file3+"/"+file[i].getName(),file4+"/"+file[i].getName());
}
return false ;
}
} 展开
推荐于2016-09-01
展开全部
if(out.exists()) out.mkdirs(); 仔细这句话,如果存在输出的文件夹,那么就创建,如果不存在,就不创建。这里是逻辑错误,导致后面程序输出时找不到输出的文件夹。可改为
if(!(out.exists())) out.mkdirs(); 还有 具体的复制实现功能有问题。这个自己仔细查看下
if(!(out.exists())) out.mkdirs(); 还有 具体的复制实现功能有问题。这个自己仔细查看下
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询