黑马程序员技术交流社区
标题:
文件夹复制问题,求解
[打印本页]
作者:
爱吃小土豆
时间:
2014-12-4 11:14
标题:
文件夹复制问题,求解
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test4 {
/**
* @param args
* 代码实现c盘某个文件夹复制到D盘中,加上代码,加上注释,加上思路;
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File orig=new File("C:\\Test\\a");
File dest=new File("D:\\Test2\\b");
copy(orig,dest);
}
public static void copy(File orig,File dest) throws IOException{
if (!orig.exists()) {
System.out.println("原文件不存在");
return ;
}if (!dest.exists()) {
dest.mkdir();
}if (!dest.isDirectory()) {
dest.mkdir();
}
File[] files = orig.listFiles();
for (File file : files) {
if (dest.isDirectory()) {
File dest1=new File(dest+"\\"+file.getName());
copy(file,dest);
}else {
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(dest+"\\"+file.getName()));
int b;
while ((b=bis.read()) !=-1) {
bos.write(b);
}
bis.close();
bos.close();
System.out.println(file.getName()+"拷贝完成");
}
}
}
}
复制代码
大家帮我看看怎么回事啊,复制不成功,还没有提示错误!
作者:
爱吃小土豆
时间:
2014-12-4 11:25
没有报错啊
作者:
爱吃小土豆
时间:
2014-12-4 11:30
ゞWinzows_♫ 发表于 2014-12-4 11:25
报错提示什么了啊?
没有报错 也没有输出“拷贝成功”那条语句
作者:
惠惠惠惠惠
时间:
2014-12-4 14:42
感觉好难啊 。
作者:
quick3g
时间:
2014-12-4 15:25
本帖最后由 quick3g 于 2014-12-4 15:26 编辑
public static void copy(File orig,File dest) throws IOException{
if (!orig.exists()) {
System.out.println("原文件不存在");
return ;
}if (!dest.exists()) {
dest.mkdir();
}if (!dest.isDirectory()) {
dest.mkdir();
}
File[] files = orig.listFiles();
for (File file : files) {
if (file.isDirectory()) {//你这里的条件错了,不是:
if (dest.isDirectory())
File destDir=new File(file+"\\"+file.getName());
copy(file,destDir);//还有这里
}else {
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(dest+"\\"+file.getName()));
int b;
while ((b=bis.read()) !=-1) {
bos.write(b);
}
bis.close();
bos.close();
System.out.println(file.getName()+"拷贝完成");
}
}
}
作者:
李天富
时间:
2014-12-4 16:03
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test4 {
/**
* @param args
* 代码实现c盘某个文件夹复制到D盘中,加上代码,加上注释,加上思路;
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File orig=new File("C:\\Test\\a");
File dest=new File("D:\\Test2\\b");
copy(orig,dest);
}
public static void copy(File orig,File dest) throws IOException{
if (!orig.exists()) {
System.out.println("原文件不存在");
return ;
}
if (!dest.exists()||!dest.isDirectory()) {
dest.mkdirs();//创建多级目录要用mkdirs().
}
File f = new File(dest.getPath()+"\\"+orig.getName());//在目的目录下创建一个与待复制文件夹同名的目录。
f.mkdir();
File[] files = orig.listFiles();
for (File file : files) {
if (file.isDirectory()) {
copy(file,f);
}else {
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
//获取路径的字符串形式用getPath();
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(f.getPath()+"\\"+file.getName()));
int b;
while ((b=bis.read()) !=-1) {
bos.write(b);
}
bis.close();
bos.close();
System.out.println(file.getName()+"拷贝完成");
}
}
}
}
复制代码
作者:
爱吃小土豆
时间:
2014-12-4 16:55
李天富 发表于 2014-12-4 16:03
厉害厉害厉害
作者:
爱吃小土豆
时间:
2014-12-4 16:56
感谢感谢
作者:
逍遥小seng
时间:
2014-12-5 01:09
我也写了个,大家参考下public class Test33 {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
File res= new File("E:\\1");
File des = new File("F:");
copyFile(res,des);
}
public static void copyFile(File res,File des) throws IOException
{
if(!des.isDirectory())
throw new RuntimeException("非法文件路径");
if(res.isDirectory())
{
File creatFile = new File(des.getAbsolutePath(),res.getName());
creatFile.mkdir();
File[] files = res.listFiles();
for(File file : files)
{
if(file.isDirectory())
{
copyFile(file,creatFile);
}
else
copyTxt(file,new File(creatFile,file.getName()));
}
}
else
copyTxt(res,new File(des,res.getName()));
}
public static void copyTxt(File res,File des) throws IOException
{
BufferedReader bufr = new BufferedReader(new FileReader(res));
BufferedWriter bufw = new BufferedWriter(new FileWriter(des));
String line = null;
while((line=bufr.readLine())!=null)
{
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2