今天是周一,周一的时候没有写日志,现在已经是周二的晚上了。真的烦,现在非常,特别,极其的想离职。下午去上班的时候眼角有翔划过。我感觉这样做不好吧,但是忍不住。很丧,非常丧,昨晚上和强哥聊了聊天,他找工作也不是很顺利。有点迷茫了。。怎么办好呢,哎,不管了,明天要不要请假回学校呢?请假回去的话,得把推荐信和成绩单打出来。请两天的假吗,行,要请就请两天的。哎,就这样,博客先结束了吧。
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); } }