Làm việc với files và folders hiệu quả hơn với java.nio? Nếu chưa biết, hãy đọc bài viết này ngay để thực hiện thành công nhé!
Giới thiệu Package java.nio
Từ version 1.7 java giới thiệu package mới java.nio giúp lập trình viên làm việc với hệ thống Files-Folders thuận tiện, hiệu quả hơn rất nhiều so với package java.io trước đó.
- Paths, Files giúp thao tác dễ dàng hơn với hệ thống Files-Folders.
- Đọc dữ liệu từ files và ghi dữ liệu ra files.
Làm việc với hệ thống Files-Folders
Paths và Files là các lớp tiện ích, cung cấp rất nhiều các phương thức giúp làm việc hiệu quả với folders và files.
import java.nio.file.Files;
import java.nio.file.Paths;
Ví dụ sau liệt kê tất cả các thư mục và files trong thư mục chứa project gốc:

Ở đây “.” là thư mục gốc chứa project.
Method Path.get(…) sẽ convert một giá trị kiểu String về giá trị kiểu Path – đường dẫn đến thư mục/file.
Method Files.list(path) trả về danh sách list các thư mục và file tại đường dẫn path. Kết quả trả về như sau:

Kết quả này tương ứng với hệ thống files-folders trong window:

Có thể duyệt các folders và files trong một thư mục bất kỳ sử dụng method Files.walk(path). Xem ví dụ sau:

Đoạn mã này sẽ in ra các files và folders trong thư mục truyền vào (tham số 4 truyền vào thể hiện mức độ 4 cấp của hệ thống files-folders tính từ thư mục truyền vào – trường hợp này là thư mục gốc). Kết quả in ra:

Vì kết quả trả về của method walk(…) là Stream<Path> nên rất dễ dàng để lọc, tìm kiếm dữ liệu thông qua các hàm trong stream api.



Đọc – ghi dữ liệu
Paths và Files là các lớp tiện ích, cung cấp rất nhiều các phương thức giúp làm việc hiệu quả với folders và files.
Chương trình sau đọc file và in ra màn hình toàn bộ nội dung:

Nếu file rất lớn, ví dụ hang triệu dòng thì khi đó dùng phương thức lines(…) sẽ trả về stream<>, lúc này đọc sẽ hiệu quả hơn:

Hoặc cũng có thể kết hợp với map(), filter():

Ghi ra file cũng vô cùng đơn giản:
Hãy thử sử dụng package mới này, dùng các methods trong Paths, Files và so sánh với cách truyền thống trước đây xem có hiệu quả hơn không nhé. Chúc các bạn thành công!
Giảng viên Nguyễn Quang Huy
Bộ môn Ứng dụng phần mềm
Trường Cao đẳng FPT Polytechnic cơ sở Hà Nội

