Java - Tạo tệp

1. Khái quát chung

Trong hướng dẫn nhanh này, chúng ta sẽ tìm hiểu cách tạo một Tệp mới trong Java - trước tiên bằng cách sử dụng các lớp TệpĐường dẫn từ NIO, sau đó là các lớp Tệp Java và FileOutputStream , Google Guava và cuối cùng là thư viện Apache Commons IO.

Bài viết này là một phần của loạt bài “Java - Back to Basic” trên Baeldung.

2. Thiết lập

Trong các ví dụ, chúng tôi sẽ xác định một hằng số cho tên tệp:

private final String FILE_NAME = "src/test/resources/fileToCreate.txt";

Và chúng tôi cũng sẽ thêm một bước dọn dẹp để đảm bảo rằng tệp chưa tồn tại trước mỗi lần kiểm tra và để xóa nó sau mỗi lần chạy thử:

@AfterEach @BeforeEach public void cleanUpFiles() { File targetFile = new File(FILE_NAME); targetFile.delete(); }

3. Sử dụng NIO Files.createFile ()

Hãy bắt đầu bằng cách sử dụng phương thức Files.createFile () từ gói Java NIO:

@Test public void givenUsingNio_whenCreatingFile_thenCorrect() throws IOException { Path newFilePath = Paths.get(FILE_NAME); Files.createFile(newFilePath); }

Như bạn có thể thấy mã vẫn rất đơn giản; chúng tôi hiện đang sử dụng giao diện Đường dẫn mới thay vì Tệp cũ .

Một điều cần lưu ý ở đây là API mới sử dụng tốt các ngoại lệ. Nếu tệp đã tồn tại, chúng tôi không còn phải kiểm tra mã trả lại. Thay vào đó, chúng ta sẽ nhận được một FileAlreadyExistsException :

java.nio.file.FileAlreadyExistsException: src/test/resources/fileToCreate.txt at sun.n.f.WindowsException.translateToIOException(WindowsException.java:81)

4. Sử dụng File.createNewFile ()

Bây giờ chúng ta hãy xem cách chúng ta có thể làm điều tương tự bằng cách sử dụng lớp java.io.File :

@Test public void givenUsingFile_whenCreatingFile_thenCorrect() throws IOException { File newFile = new File(FILE_NAME); boolean success = newFile.createNewFile(); assertTrue(success); }

Lưu ý rằng tệp không được tồn tại để thao tác này thành công. Nếu tệp tồn tại, thì hoạt động createNewFile () sẽ trả về false.

5. Sử dụng FileOutputStream

Một cách khác để tạo tệp mới là sử dụng java.io.FileOutputStream :

@Test public void givenUsingFileOutputStream_whenCreatingFile_thenCorrect() throws IOException { try(FileOutputStream fileOutputStream = new FileOutputStream(FILE_NAME)){ } }

Trong trường hợp này, một tệp mới được tạo khi chúng ta khởi tạo đối tượng FileOutputStream . Nếu một tệp có tên nhất định đã tồn tại, nó sẽ bị ghi đè . Tuy nhiên, nếu tệp hiện có là một thư mục hoặc tệp mới không thể được tạo vì bất kỳ lý do gì, thì chúng tôi sẽ nhận được một FileNotFoundException .

Ngoài ra, hãy lưu ý rằng chúng tôi đã sử dụng câu lệnh try-with-resources - để đảm bảo rằng luồng được đóng đúng cách.

6. Sử dụng Ổi

Giải pháp Guava để tạo tệp mới cũng là một giải pháp nhanh chóng:

@Test public void givenUsingGuava_whenCreatingFile_thenCorrect() throws IOException { com.google.common.io.Files.touch(new File(FILE_NAME)); }

7. Sử dụng Apache Commons IO

Thư viện Apache Commons cung cấp phương thức FileUtils.touch () thực hiện hành vi tương tự như tiện ích “ touch ” trong Linux.

Do đó, nó tạo ra một tệp trống mới hoặc thậm chí một tệp và đường dẫn đầy đủ đến tệp đó trong hệ thống tệp:

@Test public void givenUsingCommonsIo_whenCreatingFile_thenCorrect() throws IOException { FileUtils.touch(new File(FILE_NAME)); }

Lưu ý rằng điều này hoạt động hơi khác so với các ví dụ trước: nếu tệp đã tồn tại, hoạt động không bị lỗi, nó chỉ đơn giản là không làm gì cả.

Và chúng tôi đã có nó - 4 cách nhanh chóng để tạo một tệp mới trong Java.

8. Kết luận

Trong bài viết này, chúng tôi đã xem xét các giải pháp khác nhau để tạo tệp trong Java. Chúng tôi đã sử dụng các lớp là một phần của JDK và các thư viện bên ngoài.

Mã cho các ví dụ có sẵn trên GitHub.