黑马程序员技术交流社区
标题:
看到好多人说面试写了文件复制,就自己写了个,仅供参考
[打印本页]
作者:
苗润
时间:
2014-7-20 23:58
标题:
看到好多人说面试写了文件复制,就自己写了个,仅供参考
import java.io.*;
class CopyFile
{
public static void main(String[] args) throws Exception
{
FileInputStream fis = new FileInputStream(new File("D:\\coder\\Cat.class"));
FileOutputStream fos = new FileOutputStream(new File("D:\\coder\\复件.class"));
BufferedOutputStream bos = new BufferedOutputStream(fos);
int len = 0;
byte[] buf = new byte[1024];
while((len = fis.read(buf))!=-1)
{
bos.write(buf,0,len);
bos.flush();
}
fis.close();
fos.close();
}
}
复制代码
作者:
付江涛
时间:
2014-7-21 00:56
应该try一下
作者:
meibinlove
时间:
2014-7-21 06:22
面试写文件复制?不是基础测试就有吗?
作者:
huanglyhf
时间:
2014-7-21 08:59
基础测试 你I可以边查资料边写程序啊!面试的时候就靠脑子里的记忆
作者:
乐此不疲
时间:
2014-7-21 13:39
给读的流套上一个BufferedReader,使用readLine()
作者:
a6511631
时间:
2014-7-21 14:18
面试写的不是将某个文件夹中的所有文件复制到其他盘中吗?
作者:
xiaogh
时间:
2014-7-21 14:41
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.FileWriter;
import java.io.IOException;
import java.io.BufferedWriter;
import com.xgh.util.P;
/**
* 题目:设计一个带缓冲流的文件复制类
* @author xiaogh
*/
public class CopyFileByBuffered {
public static void main(String[] args){
// File file1 = new File("E:\\音乐\\钢琴\\Maksim Mrvica - Hana's Eyes.mp3");
File file1 = new File("F:\\others");
File file2 = new File("H:\\培训后需要材料列表\\南航运行网截图");
CopyFileUtil util = new CopyFileUtil();
long start = System.currentTimeMillis();
util.copyAll(file1, file2);
P.rintln(System.currentTimeMillis() - start + "毫秒");
}
}
class CopyFileUtil{
/**
* 可以copy文件及文件夹
* @param sourceFile 源文件或者源文件夹
* @param targetFile 目标文件夹
*/
public void copyAll(File sourceFile, File targetFile){
if(sourceFile.isFile()){
copyFile(sourceFile, targetFile);
}
else{
copyFolder(sourceFile, targetFile);
}
}
//这个方法只能copy文件
private void copyFile(File sourceFile, File targetFile){
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
BufferedWriter bw = null;
try {
bis = new BufferedInputStream(new FileInputStream(sourceFile));
bos = new BufferedOutputStream(new FileOutputStream(targetFile.getAbsolutePath() + File.separator + sourceFile.getName()));
//查看copy之后的文件位置
String str = targetFile.getAbsolutePath() + File.separator + sourceFile.getName();
P.rintln(str);
File file = new File("D:\\copy.log");
if(!file.exists()){
file.createNewFile();
}
//将copy记录写入日志
bw = new BufferedWriter(new FileWriter(file, true));
bw.write(sourceFile.getAbsolutePath() + " --> " + str);
bw.newLine();
bw.flush();
//copy文件
byte[] bs = new byte[1024];
int len = 0;
while((len = bis.read(bs)) != -1){
bos.write(bs, 0, len);
bos.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bis != null){
try{
bis.close();
} catch(IOException ex){
ex.printStackTrace();
}
}
if(bos != null){
try{
bos.close();
} catch(IOException ex){
ex.printStackTrace();
}
}
if(bw != null){
try{
bw.close();
} catch (IOException ex){
ex.printStackTrace();
}
}
}
}
//copy文件和文件夹
private void copyFolder(File sourceFile, File targetFile){
//预先将文件夹创建
File f = new File(targetFile.getAbsolutePath() + File.separator + sourceFile.getName());
f.mkdir();
File[] files = sourceFile.listFiles();
for(File file : files){
if(file.isFile()){
copyFile(file, f);
}
else{
copyFolder(file, f);
}
}
}
}
复制代码
这个是我看了题目试敲的。
作者:
tianleboy
时间:
2014-7-21 14:59
xiaogh 发表于 2014-7-21 14:41
这个是我看了题目试敲的。
太厉害了~~~
作者:
黑马-蒋振军
时间:
2014-7-21 16:04
一是没有自己对异常进行单独try处理,二是没有注释
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2