Bài 2: Đọc ghi dữ liệu với bộ nhớ trong Internal Storage trong Android

Ở bài trước chúng ta đã xem qua cách lưu dữ liệu trên Android với Shared Preferences thì đó là cách đầu tiên để chúng ta lưu đó các bạn, tiếp theo chúng ta sẽ học cách tiếp theo là lưu trên bộ nhớ trong của thiết bị android.

Bộ nhớ trong thì chẳng còn xa lạ gì nữa rồi đúng không các bạn,  bạn có biết thực chất dữ liệu ứng dụng bạn sẽ lưu ở đâu không? Đa phần khi cài đặt nó sẽ lưu ở bộ nhớ trong của điên thoại và hiện nay có một số thiết bị hỗ trợ lưu ở bộ nhớ ngoài nữa thì phải mình cũng không rành phần này.

Khi lưu ở bộ nhớ trong thì tương tự Shared Preferences, nó sẽ bị xoá bỏ hoàn toàn ghi các bạn xoá ứng dụng khỏi thiết bị.Vậy thì cách lưu trữ này thường được áp dụng dụng khi nào và cách sử dụng ra làm sao? thì chúng ta sẽ đi tìm hiều ngay bây giờ.

Internal Storage trong lập trình Android là gì?

Là các lưu trữ dữ liệu vào trong bộ nhớ trong của thiết bị và dữ liệu này sẽ được bảo mật đảm bảo chỉ có ứng dụng mới có thể truy xuất được mà không có bất kì ứng dụng khác có quyền truy cập kể cả là người dùng.

Dữ liệu lưu trong Internal Storage sẽ được xoá bỏ khi ứng dụng bị xoá bỏ hoàn toàn hoặc khi người dùng clear data của ứng dụng đi.

Internal Storage được sử dụng khi nào?

Với Shared Preferences thì chúng ta lưu dữ liệu với các cặp key và value vậy hạn chế của thằng này là lưu dữ liệu nhỏ, đơn giản, ngắn gọn.Ví dụ trường hợp bạn muốn lưu một đoạn log text thật dài thì dùng Shared Preferences cũng chẳng phải là ý tưởng hay đúng không nào?

Thay vào đó là bạn sẽ sử dụng Internal Storage để lưu, thực chất trong các dự án mình làm cũng chưa hề sử dụng thằng này để lưu bất cứ cái gì cả.Tuy nhiên sẽ có những lúc bạn phải dụng đến nó đấy nên chúng ta cũng học qua.

Một điều nữa, trước mình có nói Shared Preferences không thể lưu trữ 1 Object thì Internal Storage thì lại có, cái này thuộc về kiến thức Java căn bản các bạn có thể tìm hiểu thêm nhé.Có dịp mình sẽ có các bài nói riêng sau. hè hè.

Tại sao sử dụng Internal Storage?

Như trên mình đã nói là nó đảm bảo tính bảo mật dữ liệu cho ứng dụng vì không ai có thể truy cập vào bên trong để lấy cả, ngoài ra nó cũng để lưu dữ liệu vậy thôi. 😀

Đọc và ghi dữ liệu với Internal Storage

Ghi dữ liệu

Dưới đây là đoạn code để ghi một file vào bên trong ứng dụng của bạn và mình sẽ giải thích chi tiết bên dưới:


Để ghi một  file bạn sẽ mở một FileOutputStream đúng không nào? tiếp theo bạn sẽ gọi phương thức openFileOutput(String name, int mode) để tiến hành ghi file xuống, trong đó:

name: tên file bạn muốn lưu

mode: chế độ lưu, ở trên mình để là Context.MODE_PRIVATE, đây là chế độ mặc định giúp ngăn chặn việc truy cập vào file từ các ứng dụng khác.

Sau khi phương thức trên chạy thì dữ liệu hiện tại đang được lưu ở đây, bạn sẽ truy cập vào thư mục: /data/data/application_package_name/files

Để vào thư mục trên ở Android Studio bạn vào : Tools -> Android -> Android Device Monitor , rồi chọn thiết bị bạn chạy chọn vào danh mục File Explorer, truy xuất theo đường dẫn ở trên là bạn sẽ thấy, cái này chi tiết mình nói trong video nhé.

Bạn xem hình ảnh dưới đây sau khi chạy đoạn code trên nhé, nó sẽ được lưu như sau:

Internal Storage trong android

Internal Storage trong android

Bạn có nhìn thấy nó lưu file thangcoder mình đã tạo trong thư mục files không? đó chính là nơi lưu của Internal Storage đó, ngoài ra bạn có thể lưu trong thư mục cache bằng đoạn code sau:


Khi lưu ở thư mục cache thì theo cơ chế của Android sẽ tự dọn dẹp thư mục Cache khi nó quá tải tuy nhiên nhiều khuyến cáo bạn nên tự xoá nó đi khi dữ liệu vượt quá 1M.

Đọc dữ liệu

Việc đọc dữ liệu ra cũng khá là đơn giản, bạn nhìn đoạn code phía bên dưới đây nhé:


Tương tự như ghi file thì đọc file bạn cũng phải mở một luồng BufferedReader để có thể đọc file, kiến thức này bạn sẽ chịu khó học thêm ở phần java căn bản trên mạng nhé, sẽ có rất nhiều cách đoc file đó.

Chú ý dòng code này:


Đây là bạn mở 1 luồng đến file thangcoder.com rồi dùng BufferedReader để đọc luồng đó, thì câu hỏi ở đây là làm sao nó biết file thangcoder.com lưu ở đâu mà đọc thì mặc định android hiểu dữ liệu đang lưu ở đây là ở thư mục: /data/data/application_package_name/files/thangcoder.com đó nhé các bạn.

Bạn hãy nhìn xuống đoạn code này:


Nó giống 100% thằng readData() ở trên nhé, phương thức getFilesDir() này sẽ trả về thư mục /data/data/application_package_name/files/ đó các bạn, cái này mình ghi thêm để các bạn hiểu 1 hướng khác nữa.

Bài viết này tới đây là hết rồi đó các bạn, chi tiết hơn mình sẽ nói trong video nhé.

Video hướng dẫn Internal Storage trong Android

Download Source Code

Tiếp theo

Mọi ý kiến hay thắc mắc các bạn cứ comment bên dưới nhé.Chúc các bạn học tập vui vẽ!

Bài 2: Đọc ghi dữ liệu với bộ nhớ trong Internal Storage trong Android
5 (100%) 3 votes

One Response

  1. Tấn November 5, 2017

Add Comment

*