Professional Documents
Culture Documents
W05 File Input
W05 File Input
W05 File Input
InputStream – OutputStream
Lớp InputStream dùng đọc dữ liệu byte hay mảng byte từ nguồn dữ liệu. Nguồn dữ
liệu có thể là file, chuỗi, hay bộ nhớ mà nó chứa đựng dữ liệu. Nó là 1 abstract cho tất
cả các lớp input kế thừa từ nó.
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG HK 2 (2019-2020)
Lớp OutputStream tương tự như InputStream nhưng ngược lại là nó phục vụ cho việc
ghi dữ liệu.
Hai lớp này định nghĩa những thao tác truy xuất dữ liệu cơ bản theo từng byte vật lý
mà không phân biệt nguồn dữ liệu là loại gì. Các lớp kế thừa từ hai lớp này nhằm cụ
thể hóa các dòng nhập xuất byte tùy theo tình huống.
FileInputStream – FileOutputStream
Hai lớp này cho phép đọc và ghi trên một tập tin dưới dạng một Stream.
Các đối tượng của lớp này được tạo ra nhờ một chuỗi đường dẫn đến tập tin, đối
tượng File hoặc đối tượng File Descriptor làm đối số.
Yêu cầu:
Hướng dẫn:
Bài 2: Viết chương trình đọc dữ liệu từ file và ghi dữ liệu xuống file
Yêu cầu:
Nhấn vào nút “Clear all” dữ liệu trên textView được xóa sạch.
Nhấn vào nút “Write” dữ liệu trên textView sẽ được lưu xuống file dulieu.txt
Nhấn vào nút “Load” dữ liệu sẽ được nạp lên textView.
Gợi ý:
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG HK 2 (2019-2020)
Bài 3: Nâng cao - Xây dựng chương trình đơn giản minh họa ghi nhớ 3 người có điểm số
cao nhất trong danh sách High Scores
Yêu cầu:
Xây dựng giao diện cho phép nhập tên và điểm số người chơi, xuất danh sách 3
người chơi có điểm cao nhất và được sắp thứ tự giảm dần.
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG HK 2 (2019-2020)
Nếu người chơi có điểm số nhỏ hơn cả 3 người chơi có điểm số cao nhất trước đó
thì sẽ không được đưa vào danh sách High Scores
Ngược lại thì người chơi sẽ được đưa vào danh sách, và người chơi có điểm cao
thứ 3 trước đó sẽ bị loại ra khỏi danh sách High Scores.
Khi ứng dụng bị đóng, danh sách High Scores vẫn được lưu lại, lần sau mở
chương trình lên ta vẫn thấy 3 người trong High Score của lần chạy trước.
Hướng dẫn:
V. DataStorage
DataStorage
Android cung cấp một vài tùy chọn cho phép bạn lưu trữ dữ liệu. Bạn chọn phương
pháp nào phụ thuộc vào từng nhu cầu cụ thể. Ví dụ như dữ liệu lưu cho riêng chương
trình hay cho phép chương trình khác cũng có thể lưu trữ.
Shared Preferences
Cho phép đọc ghi những kiểu dữ liệu cơ bản theo cặp key-value.
Những kiểu cơ bản dùng được là: boolean, float, int, long, string.
Dữ liệu sẽ được lưu xuyên suốt các phiên làm việc ngay cả khi chương trình bị
dừng.
Để lấy đối tượng Shared Preferences dùng một trong hai phương thức:
o getSharedPreferences(): dùng khi muốn có nhiều file tham chiếu được định
nghĩa bởi tên.
o getPreferences(): dùng khi chỉ cần 1 file tham chiếu trong Activity
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG HK 2 (2019-2020)
Để ghi dữ liệu:
Để đọc dữ liệu:
Internal Storage
Ta có thể lưu file trực tiếp vào bộ nhớ trong (internal storage) của thiết bị.
Mặc định file được lưu trong internal storage là dùng riêng cho ứng dụng và không
cho phép các chương trình khác truy cập.
Khi uninstall chương trình, những file internal storage của chương trình sẽ bị xóa
theo
Để ghi dữ liệu:
Vd:
Để đọc dữ liệu:
Mode
Chế độ mở file (mở file theo kiểu gì, để làm gì, quyền ra sao).
MODE_PRIVATE: Tạo file hoặc thay thế file có cùng tên đang tồn tại và làm nó
thành dùng riêng cho chương trình.
MODE_APPEND: Tạo file mới để viết vào hoặc viết nối thêm vào nếu file đang
tồn tại và có dữ liệu.
MODE_WORLD_READABLE: Cho phép các chương trình khác có thể đọc dữ
liệu từ file.
MODE_WORLD_WRITEABLE: Cho phép các chương trình khác có thể ghi dữ
liệu lên file.
getFilesDir() : Trả về đường dẫn tuyệt đối của các internal file đã lưu.
getDir() : Tạo (hay mở) một thư mục bên trong internal storage.
deleteFile() : Xóa file được lưu trong internal storage.
fileList() : Trả về mảng những file được lưu bởi chương trình hiện tại.
External Storage
Mỗi thiết bị tương thích Android đều hỗ trợ một “external storage” cho phép ta lưu
file vào đó.
Nó có thể là một thiết bị lưu trữ rời (removable storage media) ví dụ như thẻ SD hay
là một internal (non-removable) storage
Một file được lưu external storage là công cộng, ai cũng có thể đọc ghi thậm chí là
biến mất (lấy thẻ SD ra) nên lưu trên external storage là không an toàn trong một số
trường hợp.
Do không biết External Storage đang ở tình trạng hiện tại như thế nào do đó khi làm
việc với nó ta luôn phải gọi hàm getExternalStorageState() để kiểm tra xem đã sẵn
sàng chưa.
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG HK 2 (2019-2020)
Dùng API Level 8 trở lên getExternalStoragePublicDirectory() và truyền vào loại thư
mục dùng chung mà bạn muốn DIRECTORY_MUSIC,
DIRECTORY_PICTURES,DIRECTORY_RINGTONES . Thư mục này sẽ được tạo nếu
cần.
Dùng API Level 7 trở xuống getExternalStorageDirectory() để mở File và lưu vào các
thư mục:
Hướng dẫn:
Đọc dữ liệu:
Ghi dữ liệu:
Bài 2: Viết chương trình tạo File và ghi vào Internal Storage. Kiểm tra sự tồn tại của File
trong Internal Storage
Yêu cầu:
Chương trình đơn giản ghi dữ liệu vào file đặt tên dulieu.txt (bài trước chính là
Internal Storage).
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG HK 2 (2019-2020)
Kiểm tra để biết file đã được lưu ở đâu, tại sao gọi là Internal Storage.
Hướng dẫn
Bài 3: Viết chương trình Android đọc file danhngon.txt, hiển thị ngẫu nhiên ra màng hình
từng câu danh ngôn khi touch lên màng hình.
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG HK 2 (2019-2020)
Yêu cầu:
Hướng dẫn:
Chép file danhngon.txt vào thư mục assets (có thể chọn cách lưu trữ khác). Đọc ra
InputStream.
Từ InputStream ghi vào mảng byte rồi ghi ra chuỗi.
Cắt chuỗi thành mảng chuỗi.
Override lên onTouchEvent ().
Tạo số ngẫu nhiên. Lấy câu ra và xuất lên TextView. Xuất lên 1 TextView khác tổng
số câu và câu hiện tại.
Bài 4: Nâng cao – Viết chương trình Truyện Cười đọc file truyencuoi.txt. Và hiện thị ra
màng hình từng câu chuyện.
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG HK 2 (2019-2020)
Yêu cầu:
Bài 5: Viết chương trình tạo File và ghi vào External Storage. Kiểm tra sự tồn tại của File
trong External Storage
CHUYÊN ĐỀ LẬP TRÌNH DI ĐỘNG HK 2 (2019-2020)
Yêu cầu:
Viết một một hàm tên kiemtrathenho()
dùng kiểm tra tình trạng thẻ nhớ, trả về
o 0: không đọc / không ghi
o 1: chi đọc
o 2: đọc được / ghi được
Nếu đọc ghi được, lưu vào file test.txt và
đọc ra để hiển thị.
Kiểm tra để biết file đã được lưu ở đâu,
tại sao gọi là External Storage.
Hướng dẫn:
Đọc file:
Yêu cầu:
Dùng DDMS (Dalvik Debug Monitoring Service) chép 1 số file hình ảnh, mp3,
video vào thẻ nhớ của máy giả lập.
Xây dựng lần lượt các ứng dụng Android đơn giản:
o Hiển thị các hình ảnh từ thẻ nhớ.
o Play 1 file mp3 từ thẻ nhớ.
o Play 1 video từ thẻ nhớ.