Android儲存——SD卡或者檔案儲存體實現。

來源:互聯網
上載者:User

Android實現SD卡和實現記憶體檔案儲存體的做法基本是一樣的。只是取得檔案路徑的方法不一樣,基本上跟java的檔案操作是一致的,下面是程式的代碼。配置取的位置和實現有所不同,其他是一樣的,下面是代碼:

main.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><EditText android:id="@+id/edit1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:lines="4"/><Button android:id="@+id/write"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="@string/write"/><EditText android:id="@+id/edit2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:editable="false"android:cursorVisible="false"android:lines="4"/><Button android:id="@+id/read"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="@string/read"/></LinearLayout>

在AndroidManifest資訊清單檔中要對SD卡讀取進行支援。代碼如下:

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

在String.xml中添加兩個內容:

<string name="read">讀取</string><string name="write">寫入</string>

下面是檔案實現的代碼:

package cn.jason.io;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintStream;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class FileTestActivity extends Activity {final String FILE = "jason.bin";    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                Button read = (Button) findViewById(R.id.read);        Button write = (Button) findViewById(R.id.write);                final EditText edit1 = (EditText) findViewById(R.id.edit1);        final EditText edit2 = (EditText) findViewById(R.id.edit2);                        write.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {write(edit1.getText().toString());edit1.setText("");}});                read.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {edit2.setText(read());}});    }        private String read() {try {FileInputStream fis = openFileInput(FILE);byte[] buffer = new byte[1024];int hasRead = 0;StringBuilder sb = new StringBuilder("");while ((hasRead = fis.read(buffer)) > 0) {sb.append(new String(buffer, 0, hasRead));}return sb.toString();} catch (IOException e) {e.printStackTrace();}return null;}private void write(String content){try{// 以追加模式開啟檔案輸出資料流FileOutputStream fos = openFileOutput(FILE, MODE_APPEND);// 將FileOutputStream封裝成PrintStreamPrintStream ps = new PrintStream(fos);// 輸出檔案內容ps.println(content);ps.close();}catch (Exception e){e.printStackTrace();}}}

下面是sd卡儲存實現的代碼:

package cn.jason.io;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import java.io.RandomAccessFile;import java.net.ContentHandler;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class SDCardTestActivity extends Activity {final String FILE = "/jason.bin";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Button read = (Button) findViewById(R.id.read);Button write = (Button) findViewById(R.id.write);// 擷取兩個文字框final EditText edit1 = (EditText) findViewById(R.id.edit1);final EditText edit2 = (EditText) findViewById(R.id.edit2);// 為write按鈕綁定事件監聽器write.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View source) {// 將edit1中的內容寫入檔案中write(edit1.getText().toString());edit1.setText("");}});read.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 讀取指定檔案中的內容,並顯示出來edit2.setText(read());}});}private String read() {// 如果手機插入了SD卡,而且應用程式具有訪問SD的許可權try {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {// 擷取SD卡的目錄File sdDirFile = Environment.getExternalStorageDirectory();//擷取指定檔案對應的輸入資料流FileInputStream fis = new FileInputStream(sdDirFile.getCanonicalPath()+ FILE);//將指定輸入資料流封裝成BufferedReaderBufferedReader br = new BufferedReader(new InputStreamReader(fis));StringBuilder sb = new StringBuilder("");String line = null;while ((line =br.readLine())!=null) {sb.append(line);                }return sb.toString();}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}private void write(String context){try {        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){        File sdDir = Environment.getExternalStorageDirectory();        File targetFile = new File(sdDir.getCanonicalPath()+ FILE);        RandomAccessFile raf = new RandomAccessFile(targetFile, "rw");        raf.seek(targetFile.length());        raf.write(context.getBytes());        raf.close();        }        } catch (Exception e) {        }}}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.