Mã hóa toàn bộ file trong máy tính java năm 2024
Đây là các cách cơ bản để vào ra file trong java. Thông thường chúng ta vẫn vào ra 1 file nhưng vấn đề bây giờ là : Show “Chúng ta phải xử lý rất nhiều file khoảng trên 500 file 🙂 mà cách xử lý giống nhau thì phải làm thế nào?” Cách 1:Cách này chúng ta sẽ chơi kiểu TRÂU BÒ 🙂 tức là chúng ta sẽ viết chương trình xử lý cho 1 file và sau đó sẽ cho nhập tên file vào xử lý và cứ “copy tên file rồi paste copy rồi paste…” khoảng 500 lần 🙂 Ưu điểm: rất dễ cài đặt. Nhược điểm : quá trâu bò nếu với số lượng file lớn :)) Cách 2:Ý tưởng chúng ta sẽ yêu cầu người sử dụng chuyển hết tất cả các tên file thành 1 dạng theo kiểu “fileinput-1” sau đó tăng dần số lên đến hết. Và chương trình chúng ta sẽ dùng xử lý string java để tương tác tới từng file. Ưu điểm: giảm được công sức so với cách làm trên. Nhược điểm: mỗi khi càn xử lý đều phải đổi lại tên file -> Mất tên file gốc Và cả 2 cách trên đều có một nhược điểm chung : ” Các file cần xử lý bắt buộc phải nằm chung thư mục với file chương trình “ Sẽ làm mất thời gian mỗi khi cần xử lý đều phải copy vào nằm chung thư mục với file chương trình xử lý của chúng ta. Để giải quyết các nhược điểm trên chúng ta sẽ sử dụng : PATH FILE Path File là đường dẫn tới các file nằm trên máy tính ví dụ: “/home/david/folder” Vậy ý tưởng sẽ là : chúng ta nhóm tất cả các file cần xử lý vào 1 folder và sẽ sử dụng đường dẫn tới folder đó. Ưu điểm: Hiệu quả hơn và giải quyết được các nhược điểm của 2 cách làm trên. Nhược điểm: Cài đặt phức tạp hơn Cách làm:Đầu tiên ta sẽ tạo ra 1 file mới với tham số đưa vào hàm khởi tạo file là đường dẫn tới folder cần xử lý :
Ở đây có 1 điểm cần chú ý :
Okay, sau khi đã có file được tạo theo đường path tới folder cần xử lý mục tiêu của chúng ta là cần phải lấy được từng tên của các file nằm trong folder đó ra để xử lý để làm được việc này chúng ta sử dụng hàm “list”
Sau khi đã có được mảng tên file cần xử lý việc tiếp theo là chúng ta sẽ tương tác tới từng file nằm trong thư mục đó bằng cách tạo ra 1 file mới và sử dụng hàm khởi tạo có 2 tham số đưa vào là “đường dẫn tới file” và “tên file”. VD:
Okay sau khi tương tác được vào từng file thì việc xử lý thế nào là tùy mọi người :D. Ở đây mình có slide và 1 đoạn code đơn giản để tham khảo dowload here. Bây giờ bạn đã biết cách sao chép tệp theo chương trình! :) Tất nhiên,
7lớp không chỉ cho phép bạn quản lý tệp mà còn làm việc với nội dung của tệp. Nó có
6phương thức ghi dữ liệu vào một tệp và cả 3 phương thức đọc dữ liệu:
7,
8, và
9 Chúng tôi sẽ nói chi tiết về phương thức cuối cùng. Tại sao cái đó? Bởi vì nó có một kiểu trả về rất thú vị:
0! Nghĩa là, nó trả về cho chúng ta một danh sách tất cả các dòng trong tệp. Tất nhiên, điều này giúp làm việc với nội dung tệp rất thuận tiện, vì toàn bộ tệp, từng dòng, chẳng hạn, có thể được hiển thị trên bảng điều khiển bằng một vòng lặp thông thường
1:
5 Đầu ra bảng điều khiển:
6 Siêu tiện lợi! :) Khả năng này xuất hiện trong Java 7. Stream API xuất hiện trong Java 8. Nó bổ sung một số yếu tố lập trình chức năng cho Java. Bao gồm khả năng xử lý tập tin phong phú hơn. Hãy tưởng tượng rằng chúng ta có nhiệm vụ sau: tìm tất cả các dòng bắt đầu bằng từ "As", chuyển đổi chúng thành CHỮ HOA và hiển thị chúng trên bảng điều khiển. Giải pháp sử dụng
7lớp trông như thế nào trong Java 7? Một cái gì đó như thế này:
7 Đầu ra bảng điều khiển:
8 Nhiệm vụ đã hoàn thành, nhưng bạn có nghĩ rằng đối với một nhiệm vụ đơn giản như vậy, mã của chúng tôi hóa ra lại hơi... dài dòng không? Sử dụng API luồng của Java 8, giải pháp trông thanh lịch hơn nhiều:
9 Chúng tôi đã đạt được kết quả tương tự, nhưng với ít mã hơn nhiều! Hơn nữa, không ai có thể nói rằng chúng tôi đã mất "khả năng đọc". Tôi nghĩ bạn có thể dễ dàng nhận xét về chức năng của đoạn mã này, ngay cả khi không quen thuộc với Stream API. Nói tóm lại, Luồng là một chuỗi các phần tử, qua đó bạn có thể thực hiện các thao tác khác nhau. Chúng ta lấy một đối tượng Stream từ
3phương thức, sau đó áp dụng 3 hàm cho nó:
Chúng tôi nhận được cùng một đầu ra:
8 Bây giờ chúng ta hãy quay trở lại vấn đề chính của chúng ta, đó là các tệp :) Khả năng cuối cùng mà chúng ta sẽ xem xét hôm nay là duyệt qua một cây tệp . Trong các hệ điều hành hiện đại, cấu trúc tệp thường trông giống như một cái cây: nó có gốc và có các nhánh, có thể có các nhánh khác, v.v. Gốc và nhánh là các thư mục. Ví dụ: thư mục " С:// " có thể là thư mục gốc. Nó bao gồm hai nhánh: " C://Downloads " và " C://Users ". Mỗi nhánh này có hai nhánh: " C://Downloads/Pictures ", " C://Downloads/Video ", " C://Users/JohnSmith ", " C://Users/Pudge2005". Và các nhánh này lần lượt có các nhánh khác, v.v. và đây là lý do tại sao chúng ta gọi nó là cây. Trên Linux, cấu trúc tương tự, nhưng thư mục / là thư mục gốc. Bây giờ hãy tưởng tượng rằng chúng ta cần bắt đầu từ thư mục gốc , duyệt qua tất cả các thư mục và thư mục con của nó, đồng thời tìm các tệp có một số nội dung cụ thể. Chúng tôi sẽ tìm kiếm các tệp có dòng "Đây là tệp chúng tôi cần!" Chúng tôi sẽ chọn thư mục "testFolder", nằm trên máy tính để bàn, làm thư mục gốc. Đây là nội dung của nó: Các thư mục cấp 1-a và cấp 1-b cũng chứa các thư mục: Không có thư mục nào trong các "thư mục cấp hai" này, chỉ có các tệp riêng lẻ: 3 tệp có nội dung chúng tôi cần được đặt tên giải thích một cách có chủ ý: FileWeNeed1.txt, FileWeNeed2.txt, FileWeNeed3.txt. Đây chính xác là những tệp chúng ta cần tìm bằng Java. Chung ta se lam như thê nao? Một phương pháp rất hiệu quả để duyệt qua cây tệp sẽ hỗ trợ chúng ta:
8. Đây là những gì chúng ta cần làm. Đầu tiên, chúng ta cần một tệp
9.
0là một giao diện đặc biệt, trong đó mô tả các phương pháp duyệt cây tệp. Cụ thể, đó là nơi chúng tôi sẽ đặt logic để đọc nội dung của tệp và kiểm tra xem tệp đó có chứa văn bản chúng tôi cần hay không. Đây là
0giao diện của chúng tôi:
1 Trong trường hợp này, lớp của chúng tôi kế thừa
2. Đây là một lớp thực hiện
0, trong đó chúng ta chỉ cần ghi đè lên một phương thức:
4. Ở đây chúng tôi xác định những gì cần phải được thực hiện với mỗi tệp trong mỗi thư mục. Nếu bạn cần logic phức tạp hơn để duyệt qua cấu trúc tệp, bạn nên viết triển khai
0. Bạn sẽ cần triển khai thêm 3 phương thức trong lớp đó:
Chúng tôi không cần bất kỳ logic nào như vậy được thực thi, vì vậy chúng tôi ổn với
9. Logic bên trong
0phương thức khá đơn giản: đọc tất cả các dòng trong tệp, kiểm tra xem chúng có chứa nội dung chúng ta cần hay không và nếu có, hãy in đường dẫn tuyệt đối trên bàn điều khiển. Dòng duy nhất có thể gây khó khăn cho bạn là dòng này:
2 Thật ra, điều này rất đơn giản. Ở đây chúng tôi chỉ đơn giản mô tả những gì chương trình sẽ làm sau khi tệp được truy cập và tất cả các hoạt động cần thiết đã được thực hiện. Trong trường hợp của chúng tôi, chúng tôi muốn tiếp tục duyệt qua cây, vì vậy chúng tôi chọn
1tùy chọn này. Tuy nhiên, cách khác, chúng ta có thể có một mục tiêu khác: thay vì tìm tất cả các tệp có chứa "Đây là tệp chúng tôi cần", chỉ tìm một tệp như vậy . Sau đó, chương trình sẽ chấm dứt. Trong trường hợp này, mã của chúng ta sẽ trông giống hệt nhau, nhưng thay vì ngắt, sẽ có:
3 Chà, hãy chạy mã của chúng ta và xem nó có hoạt động không.
4 Đầu ra bảng điều khiển:
5 Xuất sắc! Nó đã làm việc! :) Bạn cũng có thể chấp nhận thử thách nhỏ này: thay thế
9bằng phương thức thông thường
0, ghi đè cả 4 phương thức và đưa ra mục đích của riêng bạn cho chương trình. Ví dụ: bạn có thể viết một chương trình ghi lại tất cả các hành động của nó: hiển thị tên của tệp hoặc thư mục trước hoặc sau khi nhập chúng. Đó là tất cả cho bây giờ. Hẹn sớm gặp lại! :) |