Học lập trình Android cung cấp nhiều loại bộ nhớ cho các ứng dụng để lưu trữ dữ liệu của chúng. Các địa điểm lưu trữ này là các tùy chọn được chia sẻ, bộ nhớ trong và bộ nhớ ngoài, lưu trữ SQLite và lưu trữ qua kết nối mạng.
Trong chương này chúng ta sẽ xem xét bộ nhớ trong. Bộ nhớ trong là lưu trữ dữ liệu riêng tư trên bộ nhớ thiết bị.
Theo mặc định, các tệp này là riêng tư và chỉ được truy cập bởi ứng dụng của bạn và bị xóa khi người dùng xóa ứng dụng của bạn.
Sau đó, bạn có thể gọi phương thức ghi để ghi dữ liệu trên tệp. Cú pháp của nó được đưa ra dưới đây
Ngoài các phương thức đọc và đóng, còn có các phương thức khác được cung cấp bởi lớp FileInputStream để đọc các tệp tốt hơn. Những phương pháp này được liệt kê dưới đây
Để thử nghiệm với ví dụ này, bạn có thể chạy nó trên một thiết bị thực tế hoặc trong một trình giả lập.
Sau đây là nội dung của tệp hoạt động chính đã sửa đổi src / MainActivity.java .
Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào Chạy biểu tượng từ thanh công cụ.
Android studio cài đặt ứng dụng trên AVD của bạn và khởi động ứng dụng và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, ứng dụng sẽ hiển thị cửa sổ Trình mô phỏng sau
Bây giờ những gì bạn cần làm là nhập bất kỳ văn bản nào trong trường. Ví dụ, tôi đã nhập một số văn bản. Nhấn nút lưu. Thông báo sau sẽ xuất hiện trong bạn AVD
Bây giờ khi bạn nhấn nút tải, ứng dụng sẽ đọc tệp và hiển thị dữ liệu. Trong trường hợp của chúng tôi, dữ liệu sau sẽ được trả về
Lưu ý rằng bạn thực sự có thể xem tệp này bằng cách chuyển sang tab DDMS. Trong DDMS, chọn tệp explorer và điều hướng đường dẫn này.
Điều này cũng đã được thể hiện trong hình dưới đây.
Trong chương này chúng ta sẽ xem xét bộ nhớ trong. Bộ nhớ trong là lưu trữ dữ liệu riêng tư trên bộ nhớ thiết bị.
Theo mặc định, các tệp này là riêng tư và chỉ được truy cập bởi ứng dụng của bạn và bị xóa khi người dùng xóa ứng dụng của bạn.
Viết tệp
Để sử dụng bộ nhớ trong để ghi một số dữ liệu trong tệp, hãy gọi phương thức openFileOutput () với tên của tệp và chế độ. Các chế độ có thể được tư nhân, công cộng vv Cú pháp của nó được đưa ra dưới đâyFileOutputStream fOut = openFileOutput("file name here",MODE_WORLD_READABLE);Phương thức openFileOutput () trả về một thể hiện của FileOutputStream. Vì vậy, bạn nhận được nó trong đối tượng của FileInputStream.
Sau đó, bạn có thể gọi phương thức ghi để ghi dữ liệu trên tệp. Cú pháp của nó được đưa ra dưới đây
String str = "data"; fOut.write(str.getBytes()); fOut.close();
Đọc tệp
Để đọc từ tệp bạn vừa tạo, hãy gọi phương thức openFileInput () với tên của tệp. Nó trả về một thể hiện của FileInputStream. Cú pháp của nó được đưa ra dưới đâyFileInputStream fin = openFileInput(file);Sau đó, bạn có thể gọi phương thức đọc để đọc một ký tự cùng một lúc từ tệp và sau đó bạn có thể in nó. Cú pháp của nó được đưa ra dưới đây
int c; String temp=""; while( (c = fin.read()) != -1){ temp = temp + Character.toString((char)c); } //string temp contains all the data of the file. fin.close();Ngoài các phương thức viết và đóng, còn có các phương thức khác được cung cấp bởi lớp FileOutputStream để viết các tệp tin tốt hơn. Những phương pháp này được liệt kê dưới đây
| Sr.No | Phương pháp & mô tả |
|---|---|
| 1 | FileOutputStream (Tệp tệp, nối thêm boolean) Phương thức này xây dựng một FileOutputStream mới ghi vào tệp. |
| 2 | getChannel () Phương thức này trả về một FileChannel chỉ ghi chia sẻ vị trí của nó với luồng này |
| 3 | getFD () Phương thức này trả về bộ mô tả tệp cơ bản |
| 4 | ghi bộ đệm (byte [], int byteOffset, int byteCount) Phương thức này Ghi số byte từ bộ đệm mảng byte bắt đầu tại vị trí bù đắp cho luồng này |
| Sr.No | Phương pháp & mô tả |
|---|---|
| 1 | khả dụng () Phương thức này trả về số byte ước tính có thể đọc hoặc bỏ qua mà không bị chặn để nhập thêm |
| 2 | getChannel () Phương thức này trả về một FileChannel chỉ đọc chia sẻ vị trí của nó với luồng này |
| 3 | getFD () Phương thức này trả về bộ mô tả tệp cơ bản |
| 4 | đọc (byte [] đệm, int byteOffset, int byteCount) Phương thức này đọc ở hầu hết các byte có độ dài từ luồng này và lưu trữ chúng trong mảng byte b bắt đầu tại offset |
Thí dụ
Dưới đây là ví dụ minh họa việc sử dụng bộ nhớ trong để lưu trữ và đọc tệp. Nó tạo ra một ứng dụng lưu trữ cơ bản cho phép bạn đọc và ghi từ bộ nhớ trong.Để thử nghiệm với ví dụ này, bạn có thể chạy nó trên một thiết bị thực tế hoặc trong một trình giả lập.
| Các bước | Sự miêu tả |
|---|---|
| 1 | Bạn sẽ sử dụng Android Studio IDE để tạo ứng dụng Android theo gói com.example.sairamkrishna.myapplication. |
| 2 | Sửa đổi tệp src / MainActivity.java để thêm mã cần thiết. |
| 3 | Sửa đổi res / layout / activity_main để thêm các thành phần XML tương ứng |
| 4 | Chạy ứng dụng và chọn thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả |
package com.example.sairamkrishna.myapplication; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.io.FileInputStream; import java.io.FileOutputStream; public class MainActivity extends Activity { Button b1,b2; TextView tv; EditText ed1; String data; private String file = "mydata"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1=(Button)findViewById(R.id.button); b2=(Button)findViewById(R.id.button2); ed1=(EditText)findViewById(R.id.editText); tv=(TextView)findViewById(R.id.textView2); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { data=ed1.getText().toString(); try { FileOutputStream fOut = openFileOutput(file,MODE_WORLD_READABLE); fOut.write(data.getBytes()); fOut.close(); Toast.makeText(getBaseContext(),"file saved",Toast.LENGTH_SHORT).show(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { FileInputStream fin = openFileInput(file); int c; String temp=""; while( (c = fin.read()) != -1){ temp = temp + Character.toString((char)c); } tv.setText(temp); Toast.makeText(getBaseContext(),"file read",Toast.LENGTH_SHORT).show(); } catch(Exception e){ } } }); } }Sau đây là nội dung sửa đổi của xml res / layout / activity_main.xml .
Trong đoạn mã sau abc cho biết logo của tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:text="Internal storage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview" android:textSize="35dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point" android:id="@+id/textView" android:layout_below="@+id/textview" android:layout_centerHorizontal="true" android:textColor="#ff7aff24" android:textSize="35dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Save" android:id="@+id/button" android:layout_alignParentBottom="true" android:layout_alignLeft="@+id/textView" android:layout_alignStart="@+id/textView" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:hint="Enter Text" android:focusable="true" android:textColorHighlight="#ff7eff15" android:textColorHint="#ffff25e6" android:layout_below="@+id/imageView" android:layout_alignRight="@+id/textView" android:layout_alignEnd="@+id/textView" android:layout_marginTop="42dp" android:layout_alignLeft="@+id/imageView" android:layout_alignStart="@+id/imageView" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:src="@drawable/abc" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="load" android:id="@+id/button2" android:layout_alignTop="@+id/button" android:layout_alignRight="@+id/editText" android:layout_alignEnd="@+id/editText" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Read" android:id="@+id/textView2" android:layout_below="@+id/editText" android:layout_toLeftOf="@+id/button2" android:layout_toStartOf="@+id/button2" android:textColor="#ff5bff1f" android:textSize="25dp" /> </RelativeLayout>Sau đây là nội dung của res / values / string.xml .
<resources> <string name="app_name">My Application</string> </resources>Sau đây là nội dung của tệp AndroidManifest.xml .
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sairamkrishna.myapplication" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>Hãy thử chạy ứng dụng Lưu trữ của chúng tôi, chúng tôi vừa sửa đổi. Tôi cho rằng bạn đã tạo AVD của mình trong khi thiết lập môi trường.
Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào Chạy biểu tượng từ thanh công cụ.
Android studio cài đặt ứng dụng trên AVD của bạn và khởi động ứng dụng và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, ứng dụng sẽ hiển thị cửa sổ Trình mô phỏng sau
![]() |
| Học lập trình Android |
Bây giờ khi bạn nhấn nút tải, ứng dụng sẽ đọc tệp và hiển thị dữ liệu. Trong trường hợp của chúng tôi, dữ liệu sau sẽ được trả về
Lưu ý rằng bạn thực sự có thể xem tệp này bằng cách chuyển sang tab DDMS. Trong DDMS, chọn tệp explorer và điều hướng đường dẫn này.
tools>android>android device Monitor
![]() |
| Học lập trình Android |


Không có nhận xét nào:
Đăng nhận xét