Android開發中將資料存放區到檔案執行個體

來源:互聯網
上載者:User

第一步,改寫AndroidManifest.xml,給手機的Scard卡授權

<!--添加Scard卡讀寫授權 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

然後加單元測試instrumentation

 <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.example.androidsdcard" >
    </instrumentation>

並且在application下加 <uses-library android:name="android.test.runner"/>


 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <uses-library android:name="android.test.runner"/>
        <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>


第二步,編寫檔案讀寫的類FileStream

package com.example.androidsdcard;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import android.content.Context;
import android.os.Environment;

public class FileStream {
    private Context context;

    public FileStream(Context context) {
        this.context = context;
    }

    public FileStream() {

    }
    //讀取sd卡的檔案內容
    public String readFile(String filename){
        FileInputStream inputStream=null;
        //字元緩衝流
        ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
     //                 通過Environment獲得sd卡的路徑
        File file=new File(Environment.getExternalStorageDirectory(),filename);
        //判斷sdcard是否存在
        if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
            try {
                inputStream=new FileInputStream(file);
                int len=0;
         //建立位元組數組
                byte[]data=new byte[2048];
          //按位元組數組的大小進行讀取
                while((len=inputStream.read(data))!=-1){
                    outputStream.write(data, 0, len);    
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                if(inputStream!=null){
                    try {
                        inputStream.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }
        return new String(outputStream.toByteArray());
        
    }

    public boolean savaFile(String filename, String content) {
        boolean flag = false;
        FileOutputStream outputStream = null;
        File file = new File(Environment.getExternalStorageDirectory(),
                filename);
        if (Environment.MEDIA_MOUNTED.equals(Environment
                .getExternalStorageState())) {
            try {
                outputStream = new FileOutputStream(file);
                outputStream.write(content.getBytes());
                flag = true;
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally {
                if (outputStream != null) {
                    try {
                        outputStream.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }

        }

        return flag;
    }

}


第三部,編寫測試類別進行單元測試,進行檔案的讀寫

package com.example.androidsdcard;

import android.content.Context;
import android.test.AndroidTestCase;
import android.util.Log;

public class MyTest extends AndroidTestCase {
    private final String TAG="MyTest";
    public MyTest(){
        
    }
    public void saveFile(){//測試檔案寫入
        Context context=getContext();
        FileStream fileStream=new FileStream(context);
        boolean flag=fileStream.savaFile("hello.txt","你好嗎?");
        Log.i(TAG,"--->"+flag);
        
    }
    public void readFile(){//測試檔案內容讀取
        Context context=getContext();
        FileStream fileStream=new FileStream(context);
        String filename="hello.txt";
        String flag=fileStream.readFile(filename);
        Log.i(TAG,"--->"+flag);
        
    }

}

聯繫我們

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