android開發之路10(檔案的讀寫),android之路

來源:互聯網
上載者:User

android開發之路10(檔案的讀寫),android之路

1.安卓中檔案的資料存放區執行個體(將檔案儲存到手機內建儲存空間中):

①MainActivity.java

public class MainActivity extends Activity implements OnClickListener{

private Button mButton;

private EditText etFilename;

private EditText etFileContent;

/**

 * 檔案的儲存:

 * 第一步:建立布局檔案(包括檔案名稱的填寫,內容的填寫);

 * 第二步:在我們的主Activity中擷取控制項的對象,並給按鈕設定監聽器,用來完成擷取填寫內容,和儲存檔案的操作

 * 第三步:通常我們都會將項目中的業務類放到service層中,因此我們需要建立業務類,並完成檔案的寫入功能

 */

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mButton=(Button) findViewById(R.id.button);

        mButton.setOnClickListener(this);

        

    }

@Override

public void onClick(View v) {

etFilename=(EditText) findViewById(R.id.filename);

etFileContent=(EditText) findViewById(R.id.filecontent);

String filename=etFilename.getText().toString();

String filecontent=etFileContent.getText().toString();

FileService service=new FileService(getApplicationContext());

 

try {

service.save(filename,filecontent);

Toast.makeText(getApplicationContext(), R.string.success, Toast.LENGTH_LONG).show();

} catch (Exception e) {

Toast.makeText(getApplicationContext(), R.string.fail, Toast.LENGTH_LONG);

e.printStackTrace();

}

}

 

②FileService .java

public class FileService {

private Context context;

 

public FileService(Context context) {

this.context = context;

}

//儲存檔案到手機內部儲存

public void save(String filename,String filecontent) throws Exception{

/**

 * FileOutputStream:檔案輸出資料流

 * openFileOutput()方法中:

 * 參數1.要儲存的檔案名稱;參數2.儲存檔案的操作模式

 * 這裡我們使用私人操作模式,即建立出來的檔案只能被本應用訪問,其他應用無法訪問該檔案,

 * 另外採用私人操作模式建立的檔案,寫入檔案中的內容會覆蓋源檔案的內容

 */

FileOutputStream outputStream=context.openFileOutput(filename, Context.MODE_PRIVATE);

outputStream.write(filecontent.getBytes());

outputStream.close();

}

//讀取檔案從手機內部儲存

public String read(String filename) throws Exception{

//FileInputStream:檔案輸入資料流 

FileInputStream inputStream=context.openFileInput(filename);

ByteArrayOutputStream outputStream=new ByteArrayOutputStream();

byte[] buffer=new byte[1024];

int len=0;

while((len=inputStream.read(buffer)) != -1){

outputStream.write(buffer, 0, len);

}

byte[] data=outputStream.toByteArray();

 

return new String(data);

 

}

 

 

}

③單元測試類:FileServiceTest .java

public class FileServiceTest extends AndroidTestCase{

 

private static final String TAG="FileServiceTest";

//單元測試方法testSave()方法用來測試我們的save(String filename,String filecontent)方法是否有錯

public void testSave() throws Throwable{

FileService service=new FileService(this.getContext());

service.save("456.txt", "sdfdgsdfasd");

Log.i(TAG, "成功");

}

//單元測試testRead()方法用來測試我們的read(String filename)方法是否有錯

public void testRead() throws Throwable{

FileService service=new FileService(this.getContext());

String result=service.read("123.txt");

Log.i(TAG, result);

}

}

④資訊清單檔AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.rookie.test1"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="10"

        android:targetSdkVersion="10" />

    <!--指定單元測試的唯一標識  -->

<instrumentation 

    android:name="android.test.InstrumentationTestRunner"

    android:targetPackage="com.rookie.test1"

    android:label="testapp"/>

    <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>

 

</manifest>

⑤布局檔案activity_main.xml(省略)

 

2.安卓中檔案的資料存放區執行個體(將資料儲存到手機的SD卡中)

要想將資料儲存到sd卡中,我們首先要在資訊清單檔中設定相關的使用許可權,

如:

<!--在sd卡中建立檔案與刪除檔案的許可權  -->

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

    <!--往sd卡中寫入資料的許可權  -->

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

然後我們需要在上面的那個執行個體中的FileService.java添加一個方法,

用來儲存檔案到手機sdcard

public void saveToSDCard(String filename,String filecontent) throws Exception{

File file=new File(Environment.getExternalStorageDirectory(), filename);

FileOutputStream outputStream=new FileOutputStream(file);

outputStream.write(filecontent.getBytes());

outputStream.close();

}

然後我們需要在MainActivity.java檔案中將之前重寫的onClick()方法改寫成:

@Override

public void onClick(View v) {

etFilename=(EditText) findViewById(R.id.filename);

etFileContent=(EditText) findViewById(R.id.filecontent);

String filename=etFilename.getText().toString();

String filecontent=etFileContent.getText().toString();

FileService service=new FileService(getApplicationContext());

 

try {

//判斷sd卡是否存在,並可以讀寫

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

service.saveToSDCard(filename, filecontent);

Toast.makeText(getApplicationContext(), R.string.success, Toast.LENGTH_LONG).show();

}else{

Toast.makeText(getApplicationContext(), R.string.sd_error, Toast.LENGTH_LONG).show();

}

 

} catch (Exception e) {

Toast.makeText(getApplicationContext(), R.string.fail, Toast.LENGTH_LONG);

e.printStackTrace();

}

至此,我們已經完成了檔案寫入sd卡的功能代碼,那麼運行一下試試看吧!

相關文章

聯繫我們

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