Java: Câu hỏi và bài tập phần java.io file
Câu hỏi
1. Lớp và phương thức nào bạn sẽ sử dụng để đọc một số mẩu dữ liệu có vị trí gần cuối của một tập tin lớn?
2. Khi nào thì cần gọi format
và cách tốt nhất để chỉ ra một dòng mới là gì?
3. Bạn sẽ xác định kiểu MIME của tập tin bằng cách nào?
4. Phương thức nào bạn sẽ sử dụng để xác định một file có phải là một liên kết biểu tượng hay không?
Bài tập
Bài tập 1
Viết một ví dụ đếm số lần xuất hiện của một ký tự nào đó trong file. Ký tự bạn có thể nhập từ bàn phím, còn file bạn tự tạo và đưa nội dung vào.
Bài tập 2
Một file nào đó chứa dữ liệu bắt đầu bằng một giá trị kiểu long
và nó cho bạn biết offset của một giá trị kiểu int
. Viết một chương trình lấy và hiển thị phần dữ liệu kiểu int đó.
Bài tập 3
Viết một ứng dụng theo các mô tả như sau:
a. Tạo file nhanvien.java và thực hiện các công việc:
- Tạo một lớp có tên NhanVien bao gồm các thuộc tính: manv kiểu String, hoten kiểu String, tuoi kiểu int, luong kiểu float.
- Viết các setter, getter, constructor, và toString.
- Viết phương thức main để nhập vào các thông tin cho 1 nhân viên từ bàn phím và in các thông tin của nhân viên này ra màn hình. Lưu ý không sử dụng Scanner để nhập liệu.
b. Tạo file write_to_file.java, viết phương thức main cho phép nhập các thông tin cho 3 nhân viên từ bàn phím, sử dụng FileWriter để ghi các thông tin vừa nhập vào file text ‘nhanvien.txt’. Mở file ‘nhanvien.txt’ để xem đã ghi được thông tin vào file hay chưa.
c. Tạo file read_from_file.java, viết phương thức main, sử dụng FileReader để đọc nội dung file ‘nhanvien.txt’ và in những gì đã đọc được từ file ra màn hình.
d. Tạo file write_object.java, tạo mảng 3 nhanvien, nhập thông tin các nhân viên, sử dụng ObjectOutputStream để ghi mảng nhân viên này vào file ‘nhanvien.bin’.
e. Tạo file read_object.java, tạo mảng 3 nhanvien, sử dụng ObjectInputStream để đọc dữ liệu từ file ‘nhanvien.bin’ và in mảng nhân viên ra màn hình.
Bài tập 4
Bạn hãy viết một ứng dụng Java để tìm tổng số từ (word) ở trong một tập tin. Tập tin có thể có nhiều dòng, mỗi dòng có một số lượng từ nào đó. Dưới đây là các ví dụ về tập tin và kết quả của việc thực thi ứng dụng:
a. Ví dụ về tập tin:
Tập tin C:\Java\file1.txt chứa nội dung:
V1Study mang lai cho moi nguoi nhung bai hoc bo ich
b. Ví dụ về việc chạy ứng dụng:
Tap tin cua ban co: 20 tu (words).
Bài tập 5
Tạo 1 ứng dụng bằng Java dùng để chuyển đổi các loại tiền tệ khác nhau. Ứng dụng gồm 2 lớp:
Lớp ExchangeRate lưu tất cả các thông tin về tỷ giá, thông tin tỷ giá có thể được đọc từ file text, dữ liệu của file text được người dùng nhập vào. Lớp ExchangeRate có phương thức readInfo() dùng để đọc thông tin từ file text này. File text có chứa nhiều dòng, mỗi dòng gồm 3 mẫu dữ liệu phân tách nhau bằng dấu chấm phẩy (;): Code1;Code2;Rate, trong đó Code1 là mã của loại tiền tệ thứ nhất, Code2 là mã của loại tiền tệ thứ 2 và Rate là tỷ giá của hai loại tiền tệ này. Ví dụ như USD;IDN;15792, USD;EUR;0.87. Thông tin đọc được từ file text được lưu vào 1 collection, ví dụ như ArrayList, Vector, ... Lớp ExchangeRate cũng có phương thức convert() gồm ba tham số: code1, code2 và số lượng tiền muốn đổi, phương thức sẽ trả về số lượng tiền sau khi được trao đổi.
Lớp thứ hai là lớp chứa phương thức Main(). Lớp này sẽ được dùng để test lớp ExchangeRate
Ứng dụng cho phép người dùng chuyển đổi tiền tệ nhiều lần tùy thích bằng cách đưa ra câu hỏi: "Bạn có muốn tiếp tục không?", câu trả lời là "yes" và "no".
Giả sử rằng bạn sẽ được cấp một file có tên "rate.txt" và có nội dung như sau:
EUR;USD;1.2
USD;IDN;15789
USD;EUR;0.83
CAD;IDN;16869
Bài tập 6:
Cho 1 file thông tin khách hàng bao gồm họ tên và số điện thoại như hình dưới:
Viết một chương trình nhập thông tin của khách hàng bao gồm họ tên, số điện thoại ghi đè lên file có nội dung như trên. Ghi chú: mỗi thông tin của khách hàng là một dòng.
Bài tập 7: In điểm trung bình
1 file lưu trữ thông tin sinh viên có nội dung như hình dưới:
Mỗi dòng là thông tin của 1 sinh viên bao gồm họ tên, mã số sinh viên, điểm trung bình. Các thông tin này cách nhau 1 khoảng cách. Hãy viết một chương trình nhập vào mã số sinh viên và in ra điểm trung bình của sinh viên.
Bài tập 8
- Tạo 1 class khởi tạo mảng (class InitArray)
- Tạo 1 class nhập xuất mảng từ file kế thừa class khởi tạo mảng (class IOArray extends InitArray)
- Tạo 1 class sắp xếp mảng kế thừa class khởi tạo mảng (class SortArray extends InitArray)
- Class mảng (Array) chứa hàm main() thực thi chương trình.
Bài tập 9
1. Write a Java program to get a list of all file/directory names from the given.
2. Write a Java program to get specific files by extensions from a specified folder.
3. Write a Java program to check if a file or directory specified by pathname exists or not.
4. Write a Java program to check if a file or directory has read and write permission.
5. Write a Java program to check if given pathname is a directory or a file.
6. Write a Java program to compare two files lexicographically.
7. Write a Java program to get last modified time of a file.
8. Write Java program to read input from java console.
9. Write a Java program to get file size in bytes, kb, mb.
10. Write a Java program to read contents from a file into byte array.
11. Write a Java program to read a file content line by line.
12. Write a Java program to read a plain text file.
13. Write a java program to read a file line by line and store it into a variable.
14. Write a Java program to store text file content line by line into an array.
15. Write a Java program to write and read a plain text file.
16. Write a Java program to append text to an existing file.
17. Write a Java program to read first 3 lines from a file.
18. Write a Java program to find the longest word in a text file.
Bài tập 10
Cho trước một file có chứa sẵn dữ liệu. Hãy in ra từng từ riêng biệt kèm số lần xuất hiện của từ đó trong file.
Bài tập 11
Cho trước một file .txt. Bạn hãy kiểm tra xem trong file này có chứa mã độc hay không, nếu có chứa thì bạn hãy loại bỏ nó khỏi file.
Bài tập 12
We have a file with name words.txt that contains content as follow:
career quote dimension suite fresh crusade youth galaxy first shadow faith sleep desire science sour accompany unpleasant suntan commemorate paint fill inside shake sacred rear smoke camp prison agree gap
Write a Java program to read all words in file words.txt (see attached file) and do the followings:
1) Find the longest word
2) Find the shortest word
3) Find the average length of all words
4) Count the number of vowels (a, e, i, o, u) in each word, then print out the word with the vowel count e.g. see(2), run(1)...
Bài tập 13:
Viết chương trình thực hiện những công việc sau:
* Nhập và ghi ra file danh sách gồm n học viên (n nhập từ bàn phím) gồm các thông tin: Mã sinh viên, họ tên, giới tính, điểm Python, điểm Java.
* Đọc dữ liệu từ file và thực hiện các công việc sau:
- Tính điểm trung bình (diemTB) = (diemJava*2 + diemPython)/3 .
- Xét kết quả đậu hay trượt theo quy ước sau:
+ Nếu điểm trung bình >= 5 thì kết quả là đậu.
+ Nếu điểm trung bình <5 và giới tính là "Nam" thì kết qủa là trượt.
+ Nếu điểm trung bình <5 và phái là "Nu" thì kết quả là đậu.
- In danh sách học viên và tính toán gồm mã sinh viên, họ tên, giới tính, điểm Python, điểm Java, điểm TB, và kết quả (đậu hay trượt).
- Sắp xếp học viên theo thứ tự giảm dần theo điểm trung bình và in ra đồng thời ghi ra file.
- Nhập vào họ tên học viên cần tìm và tìm kiếm trong danh sách học viên, nếu không tìm thấy thì in ra học viên có họ tên không tìm thấy. Nếu có nhiều học viên có cùng họ tên cần tìm thì hãy in ra tất cả những học viên đó.
- Hiển thị thông tin những bạn đã đậu.
- Hiển thị thông tin những bạn đã trượt.
- Hiển thị thông tin những bạn có điểm trung bình >=8.
Bài tập 14:
Viết chương trình quản lý Sinh viên như sau:
- Các thuộc tính của Sinh viên:
maSinhVien (mã sinh viên, kiểu chuỗi, phải gồm đúng 8 ký tự)
diemTrungBinh (điểm trung bình, kiểu float, chỉ từ 0 đến 10)
tuoi (tuổi sinh viên, kiểu int, phải từ 18 tuổi)
lop (lớp sinh viên học, kiểu chuỗi, phải bắt đầu bằng “V1Study”)
- Viết các hàm:
+ Hàm inputInfo() để nhập và ghi ra file danh sách gồm N (0<N<=5000) sinh viên.
+ Hàm printInfo() để đọc từ file in thông tin từng sinh viên.
+ xetHocBong () để xét học bổng cho Sinh viên:
Nếu điểm trung bình >=9 thì học bổng là 5000000
Nếu điểm trung bình >=8 và <9 thì học bổng là 3000000
Nếu điểm trung bình >=7 và <8 thì học bổng là 1500000
+ Sắp xếp tăng dần (dùng quicksort) danh sách sinh viên theo điểm trung bình, sau đó hiển thị và ghi ra file.
+ Sắp xếp giảm dần (dùng bubblesort) danh sách sinh viên theo mã sinh viên, sau đó hiển thị và ghi ra file.
+ Hiển thị những sinh viên có điểm trung bình cao nhất.
+ Hiển thị những sinh viên phải thi lại (có điểm trung bình <5).
Bài tập 15
1. Tạo một class có tên Employee gồm:
+ Các thuộc tính: id, name, age, salary, hours.
+ Một phương thức để nhập thông tin và ghi ra file.
+ Một phương thức để tính và trả về thưởng cho nhân viên:
- Nếu số giờ làm (hours) > 200 thì thưởng thêm 20% lương (salary).
- Nếu hours>=100 và <200 thì thưởng =10%
- Trường hợp còn lại thì thưởng =0
+ Một phương thức để hiển thị tất cả các thông tin của nhân viên bao gồm cả thưởng.
Lưu ý: Các phương thức thao tác cần lấy dữ liệu từ file.
Bài tập 16: CHƯƠNG TRÌNH QUẢN LÝ TRANH
Viết chương trình theo dạng menu chọn như sau:
1. Nhập thông tin tranh và ghi ra file
2. Sắp xếp theo tên tăng dần từ A-Z
3. Sắp xếp theo diện tích giảm dần
4. Thống kê tranh theo tên tác giả
5. Tìm và hiển thị tranh theo thể loại
6. Tìm và hiển thị tranh có giá bán thấp nhất và cao nhất
7. Tìm và hiển thị tranh có diện tích bé nhất
8. Thoát
Cấu trúc dữ liệu tranh: tên, tác giả, thể loại, chiều dài (cm), chiều rộng (cm), giá bán ($).
Dữ liệu mẫu:
Tên: Thiếu Nữ Bên Hoa Huệ
Tác Giả: Tô Ngọc Vân
Thể Loại: Con Người
Chiều Dài: 90
Chiều Rộng: 60
Giá Bán: 10
--------------------------
Tên: Bức Thư
Tác Giả: Tô Ngọc Vân
Thể Loại: Con Người
Chiều Dài: 80
Chiều Rộng: 70
Giá Bán: 15
--------------------------
Tên: Trước Giờ Biểu Diễn
Tác Giả: Bùi Xuân Phái
Thể Loại: Con Người
Chiều Dài: 70
Chiều Rộng: 60
Giá Bán: 12.5
--------------------------
Tên: Phố Hàng Mắm
Tác Giả: Bùi Xuân Phái
Thể Loại: Phong Cảnh
Chiều Dài: 50
Chiều Rộng: 40
Giá Bán: 14
--------------------------
Tên: Tát Nước Đồng Chiêm
Tác Giả: Trần Văn Cẩn
Thể Loại: Phong Cảnh
Chiều Dài: 100
Chiều Rộng: 75
Giá Bán: 20.5
Bài tập 17
Viết chương trinh quản lý nhân sự theo yêu cầu sau:
1. Tạo một class Employee gồm các thuộc tính sau:
id (int - auto increase)
name (String - tối đa 20)
country (String - tối đa 15)
birthyear (int)
salary (float - USD)
2. Tạo header menu chương trình:
Chương trình quản lý nhân sự |
1. Nhập liệu | 2. Sắp xếp theo lương | 3. Hiển thị theo quê | 4. Tìm theo quê và lượng | 5. Thoát |
Menu sẽ hiển thị khi chương trình bắt đầu.
Sau khi người dùng chọn tính năng và thực thi xong, trừ option 7 sẽ hiển thị thông báo xem người dung mong muốn tiếp tục không.
Do you want to continue?
- Yes. (bấm phím ‘y’, ‘Y’)
- No (bấm phím ‘n’, ‘N’)
- Clear màn hình! (bấm phím ‘c’, ‘C’)
Lựa chọn của bạn:
Nếu người dùng chọn trường hợp không hợp lệ, yêu cầu nhập lại.
Lưu ý: chương trình cần đáp ứng được yêu cầu người dùng nhập liệu và ghi ra file trước khi sử dụng các option khác, nếu không sẽ thông báo lỗi cho người dùng, buộc người dùng phải nhập liệu nhân sự trước.
3. Nhập vào danh sách sinh viên:
Nếu người dùng chọn option 1, chương trình thực hiện những yêu cầu sau:
+ Yêu cầu người dùng nhập tổng số nhân sự
+ Nhập thông tin của mỗi nhân sự và ghi ra file
+ Validate thông tin nhập vào theo yêu cầu:
- Age >= 18 và <= 60 ( tính theo năm sinh)
- Salary phải => 1000
Mô tả tính năng khi input nhân sự:
Input employee [1]:
Name: Toan
Country: VN
Year of birth: 1992
Salary: 1200
4. Sắp xếp nhân sự theo lương giảm dần:
Khi người dùng chọn option 2, tiến hành sắp xếp, sau đó hiển thị và ghi ra file danh sách nhân sự theo lương giảm dần:
ID |
Name |
Country |
Year of birth |
Salary |
---|---|---|---|---|
2 |
Nhan su 2 |
VN |
1992 |
1400 |
1 |
Nhan su 1 |
HN |
1990 |
1200 |
3 |
Nhan su 3 |
QN |
1987 |
1150 |
5. Hiển thị số lượng nhân sự theo quê quán:
Khi người dùng chọn option 3: tính toán số lượng nhân sự theo quê quán và hiển thị giống ví dụ sau:
Ket qua phan tich:
+ 2 nhan su que ‘HN’.
+ 1 nhan su que ‘Vn’.
6. Tìm kiếm sinh viên theo quê quán và lương:
Khi người dùng chọn option 4: Yêu cầu người dùng nhập quê quán và lương.
Hiển thị tất cả những người dùng với quê quán trùng khớp và lương cao hơn lương người dùng nhập vào.
Xem phần solution tại ĐÂY.