Groovy - Tệp I / O
Groovy cung cấp một số phương thức trợ giúp khi làm việc với I / O. Groovy cung cấp các lớp dễ dàng hơn để cung cấp các chức năng sau cho tệp.
- Đọc tệp
- Ghi vào tệp
- Duyệt cây tệp
- Đọc và ghi các đối tượng dữ liệu vào tệp
Ngoài ra, bạn luôn có thể sử dụng các lớp Java bình thường được liệt kê bên dưới cho các hoạt động vào / ra tệp.
- java.io.File
- java.io.InputStream
- java.io.OutputStream
- java.io.Reader
- java.io.Writer
Đọc tệp
Ví dụ sau sẽ xuất tất cả các dòng của tệp văn bản trong Groovy. Phương phápeachLine được tích hợp sẵn trong lớp Tệp trong Groovy với mục đích đảm bảo rằng mỗi dòng của tệp văn bản đều được đọc.
import java.io.File
class Example {
static void main(String[] args) {
new File("E:/Example.txt").eachLine {
line -> println "line : $line";
}
}
}
Lớp Tệp được sử dụng để khởi tạo một đối tượng mới lấy tên tệp làm tham số. Sau đó, nó lấy chức năng của eachLine, đặt nó vào một biến được gọi là dòng và in ra tương ứng.
Nếu tệp chứa các dòng sau, chúng sẽ được in.
line : Example1
line : Example2
Đọc nội dung của tệp dưới dạng toàn bộ chuỗi
Nếu bạn muốn lấy toàn bộ nội dung của tệp dưới dạng chuỗi, bạn có thể sử dụng thuộc tính văn bản của lớp tệp. Ví dụ sau đây cho thấy cách này có thể được thực hiện.
class Example {
static void main(String[] args) {
File file = new File("E:/Example.txt")
println file.text
}
}
Nếu tệp chứa các dòng sau, chúng sẽ được in.
line : Example1
line : Example2
Ghi vào tệp
Nếu bạn muốn ghi vào tệp, bạn cần sử dụng lớp nhà văn để xuất văn bản ra tệp. Ví dụ sau đây cho thấy cách này có thể được thực hiện.
import java.io.File
class Example {
static void main(String[] args) {
new File('E:/','Example.txt').withWriter('utf-8') {
writer -> writer.writeLine 'Hello World'
}
}
}
Nếu bạn mở tệp Example.txt, bạn sẽ thấy dòng chữ “Hello World” được in trong tệp.
Nhận kích thước của tệp
Nếu bạn muốn lấy kích thước của tệp, người ta có thể sử dụng thuộc tính length của lớp tệp để lấy kích thước của tệp. Ví dụ sau đây cho thấy cách này có thể được thực hiện.
class Example {
static void main(String[] args) {
File file = new File("E:/Example.txt")
println "The file ${file.absolutePath} has ${file.length()} bytes"
}
}
Đoạn mã trên sẽ hiển thị kích thước của tệp tính bằng byte.
Kiểm tra xem tệp có phải là thư mục không
Nếu bạn muốn xem liệu một đường dẫn là một tệp hay một thư mục, người ta có thể sử dụng isFile và isDirectorytùy chọn của lớp Tệp. Ví dụ sau đây cho thấy cách này có thể được thực hiện.
class Example {
static void main(String[] args) {
def file = new File('E:/')
println "File? ${file.isFile()}"
println "Directory? ${file.isDirectory()}"
}
}
Đoạn mã trên sẽ hiển thị kết quả sau:
File? false
Directory? True
Tạo một thư mục
Nếu bạn muốn tạo một thư mục mới, bạn có thể sử dụng mkdirchức năng của lớp Tệp. Ví dụ sau đây cho thấy cách này có thể được thực hiện.
class Example {
static void main(String[] args) {
def file = new File('E:/Directory')
file.mkdir()
}
}
Thư mục E: \ Directory sẽ được tạo nếu nó không tồn tại.
Xóa tệp
Nếu bạn muốn xóa một tệp, bạn có thể sử dụng chức năng xóa của lớp Tệp. Ví dụ sau đây cho thấy cách này có thể được thực hiện.
class Example {
static void main(String[] args) {
def file = new File('E:/Example.txt')
file.delete()
}
}
Tệp sẽ bị xóa nếu nó tồn tại.
Sao chép các tập tin
Groovy cũng cung cấp chức năng sao chép nội dung từ tệp này sang tệp khác. Ví dụ sau đây cho thấy cách này có thể được thực hiện.
class Example {
static void main(String[] args) {
def src = new File("E:/Example.txt")
def dst = new File("E:/Example1.txt")
dst << src.text
}
}
Tệp Example1.txt sẽ được tạo và tất cả nội dung của tệp Example.txt sẽ được sao chép vào tệp này.
Lấy nội dung thư mục
Groovy cũng cung cấp chức năng liệt kê các ổ đĩa và tệp trong ổ đĩa.
Ví dụ sau cho thấy cách các ổ đĩa trên máy có thể được hiển thị bằng cách sử dụng listRoots chức năng của lớp Tệp.
class Example {
static void main(String[] args) {
def rootFiles = new File("test").listRoots()
rootFiles.each {
file -> println file.absolutePath
}
}
}
Tùy thuộc vào ổ đĩa có sẵn trên máy của bạn, đầu ra có thể khác nhau. Trên máy tiêu chuẩn, đầu ra sẽ tương tự như sau:
C:\
D:\
Ví dụ sau cho thấy cách liệt kê các tệp trong một thư mục cụ thể bằng cách sử dụng eachFile chức năng của lớp Tệp.
class Example {
static void main(String[] args) {
new File("E:/Temp").eachFile() {
file->println file.getAbsolutePath()
}
}
}
Đầu ra sẽ hiển thị tất cả các tệp trong thư mục E: \ Temp
Nếu bạn muốn hiển thị đệ quy tất cả các tệp trong một thư mục và các thư mục con của nó, thì bạn sẽ sử dụng eachFileRecursechức năng của lớp Tệp. Ví dụ sau đây cho thấy cách này có thể được thực hiện.
class Example {
static void main(String[] args) {
new File("E:/temp").eachFileRecurse() {
file -> println file.getAbsolutePath()
}
}
}
Đầu ra sẽ hiển thị tất cả các tệp trong thư mục E: \ Temp và trong các thư mục con của nó nếu chúng tồn tại.