Android資料存放區–檔案儲存體

來源:互聯網
上載者:User

 android平台的資料存放區主要有5種方式:
   1.檔案儲存體資料;
   2.使用SharedPreferences儲存資料;
   3.SQLite資料庫儲存資料;
   4.使用ContentProvider儲存資料;
   5.網路儲存資料;
這裡介紹檔案儲存體:
檔案儲存體方式是一種較常用的方法,在Android中讀取/寫入檔案的方法,與Java中實現I/O的程式是完全一樣的,
提供了openFileInput()和openFileOutput()方法來讀取裝置上的檔案。這種方式資料存放區在data/data/<包名>下的files檔案夾下。
當然檔案也可以從程式的raw檔案夾或Asset檔案夾讀取。



 


import java.io.FileInputStream;<br />import java.io.FileOutputStream;<br />import java.io.InputStream;</p><p>import org.apache.http.util.EncodingUtils;</p><p>import android.app.Activity;<br />import android.os.Bundle;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.widget.Button;<br />import android.widget.TextView;</p><p>public class FileActivity extends Activity {<br />public static final String ENCODING = "UTF-8";//編碼格式<br />String fileName = "test.txt";//檔案的名稱<br />String message = "這是一個關於檔案I/O的樣本。";//寫入和讀出的資料資訊<br />TextView tv;<br />Button btn1;<br />Button btn2;<br />Button btn3;<br /> /** Called when the activity is first created. */<br /> @Override<br /> public void onCreate(Bundle savedInstanceState) {<br /> super.onCreate(savedInstanceState);<br /> setContentView(R.layout.main);<br /> tv = (TextView) findViewById(R.id.tv);<br /> btn1 = (Button) findViewById(R.id.btn1);<br /> btn2 = (Button) findViewById(R.id.btn2);<br /> btn3 = (Button) findViewById(R.id.btn3);<br /> writeFileData(fileName, message);<br /> btn1.setOnClickListener(new OnClickListener() {</p><p>@Override<br />public void onClick(View v) {<br />// TODO Auto-generated method stub<br /> tv.setText(readFileData(fileName));<br />}<br />});<br /> btn2.setOnClickListener(new OnClickListener() {</p><p>@Override<br />public void onClick(View v) {<br />// TODO Auto-generated method stub<br /> tv.setText(getFromRow("test1.txt"));</p><p>}<br />});<br /> btn3.setOnClickListener(new OnClickListener() {</p><p>@Override<br />public void onClick(View v) {<br />// TODO Auto-generated method stub<br /> tv.setText(getFromAsset("test2.txt"));<br />}<br />});</p><p> }<br /> //向指定檔案中寫入指定的資料<br /> public void writeFileData(String fileName,String message){<br /> try {<br />FileOutputStream fout = openFileOutput(fileName, MODE_PRIVATE);<br />byte [] bytes = message.getBytes(); //將要寫入的字串轉換為byte數組<br />fout.write(bytes); //將byte數組寫入檔案<br />fout.close();<br />} catch (Exception e) {<br />e.printStackTrace();<br />}<br /> }<br /> //開啟指定檔案,讀取其資料,返回字串對象<br /> public String readFileData(String fileName){<br /> String result = "";<br /> try {<br />FileInputStream fin = openFileInput(fileName); //獲得FileInputStream對象<br />int length =fin.available(); //擷取檔案長度<br />byte [] buffer = new byte[length];<br />fin.read(buffer);<br />result= EncodingUtils.getString(buffer, ENCODING); //將byte數群組轉換成指定格式的字串<br />fin.close();<br />} catch (Exception e) {<br />e.printStackTrace();<br />}<br />return result;<br /> }</p><p> //方法:從resource中的raw檔案夾中擷取檔案並讀取資料<br /> public String getFromRow(String fileName){<br /> String result = "";<br /> try {<br />InputStream in = getResources().openRawResource(R.raw.test1);<br />int length = in.available();<br />byte [] buffer =new byte[length];<br />in.read(buffer);<br />result = EncodingUtils.getString(buffer, ENCODING);<br />in.close();<br /> } catch (Exception e) {<br /> e.printStackTrace();<br /> }<br /> return result;<br /> }<br /> // 從asset中擷取檔案並讀取資料<br /> public String getFromAsset(String fileName){<br /> String result="";<br /> try {<br />InputStream in = getResources().getAssets().open(fileName);<br />int length = in.available();//擷取檔案的位元組數<br /> byte [] buffer = new byte[length];//建立byte數組<br /> in.read(buffer);//將檔案中的資料讀取到byte數組中<br /> result = EncodingUtils.getString(buffer, ENCODING);<br />} catch (Exception e) {<br />e.printStackTrace();<br />}<br />return result;<br /> }<br />}<br />


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.