🎊專欄【Java小練習】
🍔喜歡的詩句:天行健,君子以自強不息。
🎆音樂分享【如愿】
🎄歡迎并且感謝大家指出小吉的問題🥰
文章目錄
- 🍔需求
- ?思路
- ?代碼
- ?效果
- 🎄如果要復制的不是txt文件,怎么辦
- ?思路
🍔需求
編寫程序,將某個目錄下所有txt文件的內容拷貝到一個新的目錄中。
?思路
這段代碼的主要思路是將一個文件夾中的所有以".txt"結尾的文件復制到另一個文件夾中。
以下是該代碼的實現步驟:
首先,我們使用File類封裝源文件夾路徑和目標文件夾路徑,分別對應"a"和"b"文件夾。
使用listFiles()方法獲取源文件夾中以".txt"結尾的所有文件,并將它們存儲在一個File數組中。
創建目標文件夾,如果目標文件夾不存在的話,使用mkdirs()方法創建。
遍歷源文件夾中的每個文件:
使用BufferedReader讀取每個文件的內容。
使用BufferedWriter將讀取到的內容寫入目標文件夾中的文件。
關閉輸入輸出流和文件讀寫器。
完成所有文件的拷貝后,在控制臺打印出拷貝完成的消息。
總體來說,代碼通過遍歷源文件夾中的每個文件,并逐行讀取其內容,然后將內容寫入目標文件夾中的相應文件中。這樣就實現了從一個文件夾向另一個文件夾的文件復制功能。
?代碼
import java.io.*;public class AddList {public static void main(String[] args) {// 封裝目錄File srcDir = new File("F:\\a");// 獲取該目錄下所有的txt文件File[] txtFiles = srcDir.listFiles(file -> file.getName().endsWith(".txt"));// 封裝目的地File destDir = new File("F:\\b");if (!destDir.exists()) {destDir.mkdirs();}for (File txtFile : txtFiles) {try {// 構建目標文件對象File targetFile = new File(destDir, txtFile.getName());// 創建輸入輸出流對象并復制數據InputStream is = new FileInputStream(txtFile);OutputStream os = new FileOutputStream(targetFile);byte[] buffer = new byte[1024];int length;while ((length = is.read(buffer)) > 0) {os.write(buffer, 0, length);}// 關閉輸入輸出流is.close();os.close();System.out.println(txtFile.getName() + " 文件已經復制到 " + targetFile.getPath());} catch (IOException e) {e.printStackTrace();}}System.out.println("所有txt文件的內容已經拷貝到b文件夾中。");}
}
?效果
🎄如果要復制的不是txt文件,怎么辦
如果我們復制粘貼的不是txt文件,可能存在其他特殊情況,特殊情況需要特殊對待
這種情況要考慮復制文件夾的情況
?思路
獲取源文件夾和目標文件夾的路徑。
-
創建目標文件夾。
使用File類的mkdirs()方法創建目標文件夾,確保父文件夾也被創建。 -
遍歷源文件夾中的所有文件和子文件夾。
使用File類的listFiles()方法獲取源文件夾中的所有文件和文件夾。
遍歷文件和文件夾列表。 -
如果是文件,則進行文件復制。
使用File類的InputStream和OutputStream創建輸入和輸出流。
使用byte數組作為緩沖區,從輸入流讀取數據,并將數據寫入輸出流。 -
如果是文件夾,則進行遞歸復制。
遞歸調用復制文件夾的方法,傳遞當前子文件夾的路徑作為新的源文件夾路徑。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class FileCopy {public static void main(String[] args) {File sourceDir = new File("sourceFolderPath"); // 源文件夾路徑File destDir = new File("destinationFolderPath"); // 目標文件夾路徑if (!destDir.exists()) {destDir.mkdirs(); // 如果目標文件夾不存在,則創建}copyFiles(sourceDir, destDir);System.out.println("所有文件已經成功復制到目標文件夾中。");}private static void copyFiles(File source, File destination) {if (source.isFile()) {try (FileInputStream fis = new FileInputStream(source);FileOutputStream fos = new FileOutputStream(new File(destination, source.getName()))) {byte[] buffer = new byte[1024];int length;while ((length = fis.read(buffer)) > 0) {fos.write(buffer, 0, length); // 將文件內容寫入目標文件夾中的對應文件}} catch (IOException e) {e.printStackTrace();}} else if (source.isDirectory()) {File[] files = source.listFiles();if (files != null) {for (File file : files) {File newDestination = new File(destination, file.getName());if (file.isDirectory()) {newDestination.mkdirs(); // 如果當前文件是文件夾,則在目標文件夾中創建對應的文件夾}copyFiles(file, newDestination); // 遞歸復制子文件夾中的文件}}}}
}
這樣子,我們就完成了復制粘貼操作
在技術的道路上,我們不斷探索、不斷前行,不斷面對挑戰、不斷突破自我。科技的發展改變著世界,而我們作為技術人員,也在這個過程中書寫著自己的篇章。讓我們攜手并進,共同努力,開創美好的未來!愿我們在科技的征途上不斷奮進,創造出更加美好、更加智能的明天!