Header ads

Header ads
» » Lưu tập tin ở bộ nhớ trong

Lưu tập tin ở bộ nhớ trong

Để đơn giản hóa việc đọc và ghi luồng dữ liệu tập tin được lưu ở bộ nhớ trong (hay gọi là thư mục dữ liệu bên trong ứng dụng trong hê thống) Android cung cấp các phương thức openFileInput / openFileOutput tương ứng cho 2 luồng đọc và ghi từ context của phiên làm việc hiện tại của ứng dụng. Nếu tập tin có tên là giá trị được truyền làm đối số của hàm FileOutputStream() không tồn tại (tập tin chưa được tạo ra và lưu lại), hệ thống sẽ tự động tạo tập tin và ghi xuống bộ nhớ. Nếu đã có sẵn thì hệ thống mặc định sẽ chép đè nội dung mới lên nội dung cũ của tập tin. Trừ trường hợp nếu mode được gán là Context.MODE_APPEND thì nội dung mới sẽ được thêm vào nối tiếp nội dung sẵn có trong tập tin.

 


Một số điểm quan trọng trong việc lưu trữ trong bộ nhớ trong

  • Dữ liệu trong bộ nhớ được phép đọc và ghi vào tập tin.
  • Các tập tin này chỉ được truy cập bởi chính ứng dụng đó, không cho phép truy cập bởi ứng dụng khác.
  • Các tập tin này vẫn tồn tại khi ứng dụng vẫn tồn tại, các tập tin sẽ bị xóa tự động khi ứng dụng uninstall.
  • Các tập tin này lưu trữ trong thư mục data/data theo sau là tên package của ứng dụng.
  • Có thể phân quyền cho các ứng dụng khác truy cập các tập tin này.
  • Để phân quyền dữ liệu chúng ta có thể dùng chế đô MODE_PRIVATE

Các Mode lưu trữ ở bộ nhớ trong

MODE_PRIVATE – Đây là chế độ mặc định. MODE_PRIVATE được sử dụng để thiết lập chế độ riêng tư, không chấp nhận ứng dụng từ bên ngoài.

MODE_APPEND – Dữ liệu được thêm vào tập tin đã tồn tại
 


Ghi dữ liệu vào tập tin

  • Định nghĩa tên tập tin và cũng định nghĩa dữ liệu bạn muốn ghi vào tập tin.
  • Sử dụng phương thức FileOutputStream .
  • Đổi dữ liệu thành byte stream.
  String File_Name= "Demo.txt"; //gives file name  String Data="Hello!!"; //define data    FileOutputStream fileobj = openFileOutput( File_Name, Context.MODE_PRIVATE);  byte[] ByteArray = Data.getBytes(); //Converts into bytes stream  fileobj.write(ByteArray); //writing to file  fileobj.close(); //File closed

Ví dụ: Trong ví dụ này chúng ta sẽ làm ứng dụng để lưu trữ dữ liệu trong bộ nhớ trong. Trong ứng dụng có 2 Activity, Activity đầu tiên lưu trữ dữ liệu, Activity 2 dùng để đọc dữ liệu. Tiến hành tạo project, vào thư mục  res /layout -> activity_main.xml  thiết kế giao diện sau:

Bước 1: Tạo một project tên là InternalStorageFile->New->Android Application Project điền các thông tin ->Next ->Finish
Bước 2: 
Mở res -> layout -> xml (hoặc) activity_main.xml và thêm code trong Relaytive Layout
Trong code chúng ta thêm textviewedittext và button có sự kiện onclick.

  <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:paddingBottom="@dimen/activity_vertical_margin"      android:paddingLeft="@dimen/activity_horizontal_margin"      android:paddingRight="@dimen/activity_horizontal_margin"      android:paddingTop="@dimen/activity_vertical_margin"      tools:context="hiepsiit.com.internalstorage.Main2Activity" >           <TextView          android:text="name"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignParentTop="true"          android:layout_alignRight="@+id/button3"          android:layout_alignEnd="@+id/button3"          android:layout_marginRight="11dp"          android:layout_marginEnd="11dp"          android:layout_marginTop="76dp"          android:id="@+id/textView3"          android:textSize="18sp"          android:textStyle="bold|italic" />        <TextView          android:text="password"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_below="@+id/textView3"          android:layout_alignRight="@+id/textView3"          android:layout_alignEnd="@+id/textView3"          android:layout_marginTop="33dp"          android:id="@+id/textView4"          android:textStyle="bold|italic"          android:textSize="18sp" />        <TextView          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_above="@+id/textView4"          android:layout_alignLeft="@+id/button4"          android:layout_alignStart="@+id/button4"          android:id="@+id/getname"          android:textStyle="bold|italic"          android:textSize="18sp" />        <TextView          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignBottom="@+id/textView4"          android:layout_alignLeft="@+id/getname"          android:layout_alignStart="@+id/getname"          android:id="@+id/getpass"          android:textStyle="bold|italic"          android:textSize="18sp" />        <Button          android:text="@string/load"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:id="@+id/button3"          android:layout_marginLeft="35dp"          android:layout_marginStart="35dp"          android:onClick="loadMe"          android:layout_below="@+id/textView4"          android:layout_alignParentLeft="true"          android:layout_alignParentStart="true"          android:layout_marginTop="80dp" />        <Button          android:text="@string/back"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_marginRight="54dp"          android:layout_marginEnd="54dp"          android:id="@+id/button4"          android:onClick="backMe"          android:layout_alignBaseline="@+id/button3"          android:layout_alignBottom="@+id/button3"          android:layout_alignParentRight="true"          android:layout_alignParentEnd="true" />      </RelativeLayout>  

Bước 3: Trong tập tin strings.xml chúng ta định nghĩa các nhãn cho  textviewedittext và button.

  <?xml version="1.0" encoding="utf-8"?>  <resources>        <string name="app_name">" InternalStorage"</string>      <string name="hello_world">Hello world!</string>      <string name="action_settings">Settings</string>      <string name="name">NAME</string>      <string name="password">PASSWORD</string>      <string name="save">SAVE</string>      <string name="next">NEXT</string>      <string name="load">LOAD</string>      <string name="back">BACK</string>      <string name="title_activity_main2">Main2Activity</string>    </resources>  

Bước 4: Mở app -> src ->MainActivity.java và thêm code. Trong bước này chúng ta mở MainActivity.java và thêm các phương thức cho 2 button "SAVE" và "NEXT". Button "SAVE " lấy dữ liệu từ edittext và lưu nó vào tập tin theo định dạng là byte. Chúng ta cũng hiển thị đường dẫn tập tin thông qua đối tượng Toast. Phương thức cho button "NEXT" mở Activity 2 .

  package hiepsiit.com.internalstorage;    import java.io.File;  import java.io.FileOutputStream;  import java.io.IOException;    import android.app.Activity;  import android.content.Context;  import android.content.Intent;  import android.os.Bundle;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.widget.EditText;  import android.widget.Toast;    public class MainActivity extends Activity {  	EditText editname,editpass;  	@Override  	protected void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState);  		setContentView(R.layout.activity_main);  		editname = (EditText) findViewById(R.id.editName);          editpass= (EditText) findViewById(R.id.editPass);  	}  public void  saveMe(View view)  // SAVE      {          File file= null;          String name = editname.getText().toString();          String password = editpass.getText().toString();                FileOutputStream fileOutputStream = null;              try {                  name = name + " ";                  file = getFilesDir();                  fileOutputStream = openFileOutput("Code.txt", Context.MODE_PRIVATE); //MODE PRIVATE                  fileOutputStream.write(name.getBytes());                  fileOutputStream.write(password.getBytes());                  Toast.makeText(this, "Saved \n" + "Path --" + file + "\tCode.txt", Toast.LENGTH_SHORT).show();                  editname.setText("");                  editpass.setText("");                  return;              } catch (Exception ex) {                  ex.printStackTrace();              } finally {                  try {                      fileOutputStream.close();                  } catch (IOException e) {                      e.printStackTrace();                  }              }          }        public void  nextMe(View view)   //NEXT      {          Toast.makeText(this,"NEXT", Toast.LENGTH_SHORT).show();          Intent intent= new Intent(this, Main2Activity.class);          startActivity(intent);        }  }

Bước 5: Tạo thêm Activity Android đặt tên Main2Activity .  Mở res -> layout -> xml (hoặc) activity_main2.xml và thêm code:

  <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:paddingBottom="@dimen/activity_vertical_margin"      android:paddingLeft="@dimen/activity_horizontal_margin"      android:paddingRight="@dimen/activity_horizontal_margin"      android:paddingTop="@dimen/activity_vertical_margin"      tools:context="hiepsiit.com.internalstorage.Main2Activity" >           <TextView          android:text="name"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignParentTop="true"          android:layout_alignRight="@+id/button3"          android:layout_alignEnd="@+id/button3"          android:layout_marginRight="11dp"          android:layout_marginEnd="11dp"          android:layout_marginTop="76dp"          android:id="@+id/textView3"          android:textSize="18sp"          android:textStyle="bold|italic" />        <TextView          android:text="password"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_below="@+id/textView3"          android:layout_alignRight="@+id/textView3"          android:layout_alignEnd="@+id/textView3"          android:layout_marginTop="33dp"          android:id="@+id/textView4"          android:textStyle="bold|italic"          android:textSize="18sp" />        <TextView          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_above="@+id/textView4"          android:layout_alignLeft="@+id/button4"          android:layout_alignStart="@+id/button4"          android:id="@+id/getname"          android:textStyle="bold|italic"          android:textSize="18sp" />        <TextView          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignBottom="@+id/textView4"          android:layout_alignLeft="@+id/getname"          android:layout_alignStart="@+id/getname"          android:id="@+id/getpass"          android:textStyle="bold|italic"          android:textSize="18sp" />        <Button          android:text="@string/load"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:id="@+id/button3"          android:layout_marginLeft="35dp"          android:layout_marginStart="35dp"          android:onClick="loadMe"          android:layout_below="@+id/textView4"          android:layout_alignParentLeft="true"          android:layout_alignParentStart="true"          android:layout_marginTop="80dp" />        <Button          android:text="@string/back"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_marginRight="54dp"          android:layout_marginEnd="54dp"          android:id="@+id/button4"          android:onClick="backMe"          android:layout_alignBaseline="@+id/button3"          android:layout_alignBottom="@+id/button3"          android:layout_alignParentRight="true"          android:layout_alignParentEnd="true" />      </RelativeLayout>  

Bước 6: Mở src -> package -> Main2Activity.java. Trong bước này chúng ta mở Main2Activity.java và thêm các phương thức cho 2 button "Load" và "Back". Button "Load" lấy dữ liệu từ tập tin và lưu nó vào đối tượng StringBuffer, sau đó hiển thị nó lên textview. Phương thức cho button "Back" mở MainActivity.

  package hiepsiit.com.internalstorage;    import java.io.FileInputStream;    import android.app.Activity;  import android.content.Intent;  import android.os.Bundle;  import android.util.Log;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.widget.TextView;  import android.widget.Toast;    public class Main2Activity extends Activity {  	TextView getname, getpass;  	@Override  	protected void onCreate(Bundle savedInstanceState) {  		super.onCreate(savedInstanceState);  		setContentView(R.layout.activity_main2);  		getname = (TextView)findViewById(R.id.getname);  	    getpass = (TextView)findViewById(R.id.getpass);  	}  	  	public void  loadMe(View view)      {          try {             FileInputStream fileInputStream =  openFileInput("Code.txt");              int read = -1;              StringBuffer buffer = new StringBuffer();             while((read =fileInputStream.read())!= -1){                 buffer.append((char)read);             }              Log.d("Code", buffer.toString());              String name = buffer.substring(0,buffer.indexOf(" "));              String pass = buffer.substring(buffer.indexOf(" ")+1);              getname.setText(name);              getpass.setText(pass);          } catch (Exception e) {              e.printStackTrace();          }          Toast.makeText(this,"Loaded", Toast.LENGTH_SHORT).show();      }        public void  backMe( View view)      {          Toast.makeText(this,"Back", Toast.LENGTH_SHORT).show();          Intent intent= new Intent(this, MainActivity.class);          startActivity(intent);      }  }  

Download ví dụ

Ứng dụng này được phát triển bởi adt bundleandroid 4.2 sử dụng minimum sdk 8 and target sdk 21.


Kết quả khi chạy ứng dụng:


Xem tập tin được lưu trữ trong Shared Preference:

Chọn Window-> Show View -> Other

Sau đó, tìm File Explore ->OK

Chọn File Explore


 




Cập nhật công nghệ từ Youtube tại link: https://www.youtube.com/channel/UCOxeYcvZPGf-mGLYSl_1LuA/videos
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn