Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để đọc tất cả các tệp trong một thư mục thành một tệp duy nhất bằng Java?

listFiles () phương thức của Tệp lớp trả về một mảng chứa các đối tượng (đường dẫn trừu tượng) của tất cả các tệp (và thư mục) trong đường dẫn được đại diện bởi đối tượng (Tệp) hiện tại.

Để đọc nội dung của tất cả các tệp trong một thư mục thành một tệp duy nhất -

  • Tạo một đối tượng tệp bằng cách chuyển đường dẫn tệp bắt buộc làm tham số.
  • Đọc nội dung của từng tệp bằng Máy quét hoặc bất kỳ trình đọc nào khác.
  • Nối nội dung đã đọc vào StringBuffer.
  • Ghi nội dung StringBuffer vào tệp đầu ra cần thiết.

Ví dụ

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Test {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\\SampleDirectory");
      //List of all files and directories
      File filesList[] = directoryPath.listFiles();
       System.out.println("List of files and directories in the specified directory:");
      Scanner sc = null;
      StringBuffer sb = new StringBuffer();
      for(File file : filesList) {
         System.out.println("File name: "+file.getName());
         System.out.println("File path: "+file.getAbsolutePath());
         System.out.println("Size :"+file.getTotalSpace());
         //Instantiating the Scanner class
         sc= new Scanner(file);
         String input;
         while (sc.hasNextLine()) {
            input = sc.nextLine();
            sb.append(input+" ");
         }
         System.out.println("Contents of the file: "+sb.toString());
         System.out.println(" ");        
           //Instantiating the FileOutputStream class
         FileOutputStream fileOut = new FileOutputStream("D:\\output.txt");
         //Instantiating the DataOutputStream class
         DataOutputStream outputStream = new DataOutputStream(fileOut);
         //Writing UTF data to the output stream
         outputStream.write(sb.toString().getBytes());
         outputStream.flush();
         System.out.println("Data entered into the file");
      }
   }
}

Đầu ra

List of files and directories in the specified directory:
File name: sample1.txt
File path: D:\SampleDirectory\sample1.txt
Contents of the file: sample text file1

Data entered into the file
File name: sample2.txt
File path: D:\SampleDirectory\sample2.txt
Contents of the file: sample text file2

Data entered into the file
File name: sample3.txt
File path: D:\SampleDirectory\sample3.txt
Contents of the file: sample text file3

Data entered into the file