Android從外部儲存裝置中儲存和載入本地檔案
有時候應用需要將資料寫入到裝置的外部儲存上。列如,需要同其他應用或使用者共享音樂、圖片或者網路下載資料時,儲存在外部裝置的資料共享起來要比較方便。而且,外部裝置通常具有更大的儲存空間。
我們可以通過android.os.Environment.getExternalStorageDirectory()方法獲取sdCard的路徑。再在此路徑下建立一個MyFiles的檔案,將資料儲存在MyFiles資料夾下。
下面就展示如何在外部儲存裝置中儲存和載入本地檔案:
1、建立一個名為 DataStorage的工程
2、準備好佈局檔案(activity_data_storage.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/data_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="未操作" /> <Button android:id="@+id/save_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="儲存資料" /> <Button android:id="@+id/load_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="載入資料" /> </LinearLayout>
3、在AndroidManifest.xml中加入往sdCard寫入檔案的許可權
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
4、DataStorageActivity.java
package com.example.datastorage; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.Writer; import android.os.Bundle; import android.os.Environment; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class DataStorageActivity extends ActionBarActivity { private static final String FILENAME = "data.txt"; private static final String TAG = "DataStorageActivity"; private TextView dataView; private Button saveButton; private Button loadButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_date_storage); dataView = (TextView) findViewById(R.id.data_view); saveButton = (Button) findViewById(R.id.save_button); loadButton = (Button) findViewById(R.id.load_button); setListener(); } private void setListener() { saveButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { saveData(); } catch (IOException e) { } Toast.makeText(DataStorageActivity.this, "儲存成功", Toast.LENGTH_SHORT).show(); } }); loadButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { loadData(); } catch (FileNotFoundException e) { } catch (IOException e) { } } }); } public void saveData() throws IOException { File sdCard = Environment.getExternalStorageDirectory(); // 獲取外部儲存裝置(SD卡)的路徑 Log.i(TAG, sdCard.getAbsolutePath()); // 檢視LogCat,獲取的sd卡的絕對路徑為 /storage/sdcard sdCard = new File(sdCard, "/MyFiles"); sdCard.mkdirs();// 建立MyFiles目錄(可建立多級目錄) sdCard = new File(sdCard, FILENAME); FileOutputStream out = new FileOutputStream(sdCard); Writer writer = new OutputStreamWriter(out); try { String str = "來自儲存在內部儲存裝置的資料"; writer.write(str); } finally { writer.close(); } } public void loadData() throws FileNotFoundException, IOException { BufferedReader reader = null; StringBuilder data = new StringBuilder(); try { File sdCard = Environment.getExternalStorageDirectory(); sdCard = new File(sdCard, "/MyFiles/" + FILENAME); FileInputStream in = new FileInputStream(sdCard); reader = new BufferedReader(new InputStreamReader(in)); String line = new String(); while ((line = reader.readLine()) != null) { data.append(line); } dataView.setText(data); } catch (FileNotFoundException e) { dataView.setText("沒有發現儲存的資料"); } finally { reader.close(); } } }
執行程式,點選儲存資料按鈕,Toast顯示儲存成功字樣後。再點選載入資料按鈕:
可以發現儲存在內部儲存裝置的裝置被載入後在TextView顯示。再看檔案具體位置:
相關文章
- 載入和儲存properties檔案
- Android-內部儲存和外部儲存Android
- Android內部儲存和外部儲存,以及讀取Android讀取RAM,ROM內部儲存和外部儲存卡容量Android
- 儲存檔案到本地
- Android 外部儲存Android
- Android中的資料儲存之檔案儲存Android
- Android下載網路pdf檔案儲存至本地Android
- 塊儲存 檔案儲存 物件儲存物件
- 儲存、檔案管理/目錄、裝置管理
- Android 檔案儲存Android
- android: 檔案儲存Android
- Android儲存(3)– 裝置配置Android
- 【儲存】裸裝置和OracleOracle
- 資料儲存--檔案儲存
- 外部儲存器
- 本地儲存
- spacy儲存和載入模型模型
- 儲存CSDN 中的部落格文章為本地檔案
- 檔案儲存
- 機器學習之儲存與載入.pickle模型檔案機器學習模型
- Android 檔案儲存淺析Android
- Flutter持久化儲存之檔案儲存Flutter持久化
- 物件儲存 vs 檔案儲存 vs 塊儲存,選哪個?物件
- store下載檔案儲存位置
- Android——儲存圖片到外部儲存並進行原生分享Android
- Paramiko SSH登入裝置儲存配置
- JavaScript 本地儲存JavaScript
- web本地儲存Web
- angular 本地儲存Angular
- 在 Ubuntu中從外部儲存庫安裝軟體包步驟Ubuntu
- 在 Python 中儲存和載入機器學習模型Python機器學習模型
- CSV檔案儲存
- 淺談Android的檔案儲存Android
- Android儲存讀取txt檔案Android
- 在.Net中將MailMessage儲存為本地eml檔案(轉)AI
- IOS資料儲存之檔案沙盒儲存iOS
- 本地儲存-系統和保留-系統檔案佔用儲存空間過大的解決方式
- 本地儲存localStorage使用