今天是周一,周一的时候没有写日志,现在已经是周二的晚上了。真的烦,现在非常,特别,极其的想离职。下午去上班的时候眼角有翔划过。我感觉这样做不好吧,但是忍不住。很丧,非常丧,昨晚上和强哥聊了聊天,他找工作也不是很顺利。有点迷茫了。。怎么办好呢,哎,不管了,明天要不要请假回学校呢?请假回去的话,得把推荐信和成绩单打出来。请两天的假吗,行,要请就请两天的。哎,就这样,博客先结束了吧。
package homework;
import java.io.*;
/**
* 1.复制文件是常见的IO操作,设计如下方法,实现复制源文件srcFile到目标文件destFile
* 需要留意的是,read会返回实际的读取数量,有可能实际的读取数量小于缓冲的大小,
* 那么把缓冲中的数据写出到目标文件的时候,就只应该写出部分数据。
* 2.复制文件夹,实现如下方法,把源文件夹下所有的文件 复制到目标文件夹下(包括子文件夹)
*/
public class TestStream {
//copyFile使用
private static File srcFile = new File("D:\\xyz\\lol.txt");
private static File destFile = new File("D:\\xyz\\lol2.txt");
//copyFolder使用
private static File srcFolder = new File("D:\\xyz");
private static File destFolder = new File("D:\\abc");
/**
* @param srcFile 源文件
* @param destFile 要将复制内容写入的文件
*/
public static void copyFile(File srcFile,File destFile){
//缓存区,一次性读取1024字节
byte[] buffer = new byte[1024];
//文件流的输入输出
try (FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(destFile)){
//System.out.println("开始读取");
while (true){
//实际读取的长度是 actuallyReaded,有可能小于1024
int actuallyReaded = fis.read(buffer);
//-1表示没有可读的内容了
if (actuallyReaded == -1){
break;
}
fos.write(buffer,0,actuallyReaded);
fos.flush();
//System.out.println("复制完成");
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void copyFolder(File srcFolder, File destFolder){
if (!srcFolder.exists()){
return;
}
if (!srcFolder.isDirectory()){
return;
}
//此处逻辑,目标文件夹是文件就返回,不存在就创建文件夹
if (!destFolder.exists()){
destFolder.mkdirs();
}
if (destFolder.isFile()){
return;
}
//以文件数组的形式,返回当前文件夹下的所有文件
File[] files = srcFolder.listFiles();
//for (int i = 0; i < files.length;i++) 尝试foreach
for (File srcFile :
files) {
if (srcFile.isFile()) {
File newdestFile = new File(destFolder, srcFile.getName());
copyFile(srcFile, newdestFile);
}
//若是文件夹,则递归调用copyFolder
if (srcFile.isDirectory()){
File newdestFolder = new File(destFolder,srcFile.getName());
copyFolder(srcFolder,newdestFolder);
}
}
}
public static void main(String[] args) {
//copyFile(srcFile,destFile);
copyFolder(srcFolder,destFolder);
}
}
京公网安备 11010502036488号