Android向SD卡和ROM寫檔案
SD卡的路徑在/mnt/sdcard/ ,由於SDK2.1之前sdcard是在根目錄,所以如果希望相容老版本,那麼就別用這種寫死路徑的方式
ROM的路徑在當前應用的目錄下 /data/data/com.xxc.file/files/
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/nameET"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="請輸入檔名" >
</EditText>
<EditText
android:id="@+id/contentET"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="請輸入檔案內容"
android:inputType="textMultiLine"
android:lines="3" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Button
android:id="@+id/sdBT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="儲存到SD卡"
android:onClick="onClick"
/>
<Button
android:id="@+id/romBT"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="儲存到ROM"
android:onClick="onClick"
/><!-- 兩個按鈕用的同一個onclick事件 -->
</LinearLayout>
</LinearLayout>
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText nameET;
private EditText contentET;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
nameET = (EditText) findViewById(R.id.nameET);
contentET = (EditText) findViewById(R.id.contentET);
}
@Override
protected void onResume() {//當介面切換到前臺時執行
super.onRestart();
//findViewById(R.id.sdBT).setEnabled(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED));
//如果SD卡的狀態不是已裝載狀態,那麼儲存到SD卡按鈕就顯示不能用
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
findViewById(R.id.sdBT).setEnabled(false);//
}else{
findViewById(R.id.sdBT).setEnabled(true);//
}
}
public void onClick(View view){
try {
String name = nameET.getText().toString();
String content = contentET.getText().toString();
FileService service = new FileService(this);//引數寫getApplicationContext也行,因為都是Context的子類
switch (view.getId()) {
case R.id.sdBT:
service.saveToSDCard(name,content);
Toast.makeText(getApplicationContext(), "儲存成功", Toast.LENGTH_SHORT).show();
break;
case R.id.romBT:
service.saveToRom(name,content);
Toast.makeText(getApplicationContext(), "儲存成功", Toast.LENGTH_SHORT).show();
break;
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "儲存失敗", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
}
FileService.java
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import android.content.Context;
import android.os.Environment;
public class FileService {
private Context context;
/**
* 由於openFileOutput方法是在Context類中的
* MainActivity繼承Activity類
* Activity類是Context子類,所以將MainActivity傳入就能獲取到這個方法
*/
public FileService(Context context){
this.context = context;
}
//SD卡的寫操作需要新增許可權,讀操作不需要
public void saveToSDCard(String name, String content) throws IOException {
File file = new File(Environment.getExternalStorageDirectory(),name);//獲取SD卡所在目錄(相容所有版本)
FileOutputStream fos = new FileOutputStream(file);//建立輸出流,指向SD卡目錄
fos.write(content.getBytes());//寫出檔案內容
fos.close();
}
//手機記憶體的讀寫操作不需要許可權
public void saveToRom(String name, String content) throws IOException {
/**
* 第一個引數是檔名,第二個引數是模式
* MODE_PRIVATE:只有當前應用對此檔案能進行讀寫操作
* MODE_WORLD_READABLE:所有應用都能對此檔案進行讀操作
* MODE_WORLD_WRITEABLE:所有應用都能對此檔案進行寫操作
* MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE:所有應用都能對此檔案進行讀寫操作
* MODE_APPEND:可以追加內容到此檔案後
*/
FileOutputStream fos = context.openFileOutput(name, Context.MODE_PRIVATE);//建立一個輸出流,指向當前應用在手機上的目錄
fos.write(content.getBytes());
fos.close();
}
}
相關文章
- Android:檔案下載和寫入SD卡學習小結AndroidSD卡
- Android 各版本 SD卡檔案讀寫變化及其音樂播放AndroidSD卡
- 【Android APK】解析SD卡上的APK檔案AndroidAPKSD卡
- Android--手持PDA讀取SD卡中檔案AndroidSD卡
- Android開發之SD卡上檔案操作 (轉)AndroidSD卡
- 播放SD卡上全部音訊檔案SD卡音訊
- sd卡刪除的檔案如何恢復SD卡
- 如何從壞掉的SD卡恢復檔案SD卡
- Android 對SD卡的操作AndroidSD卡
- sd卡中的資料夾刪除了怎麼恢復,SD卡刪除的檔案如何恢復SD卡
- Arduino+ESP32 之 SD卡讀寫UISD卡
- sd卡防寫不能格式化win10_win10系統sd卡防寫怎麼格式化SD卡Win10
- 使用ContentResolver查詢SD卡中特定的檔案SD卡
- arduino使用SD卡模組以及檢查SD卡資訊UISD卡
- TF卡,Micro SD卡,Micro SDHC卡SD卡
- android的sd卡上建立目錄不顯示AndroidSD卡
- Android SD卡檢測和SP資料儲存不及時解決方案AndroidSD卡
- 對sd卡分割槽fat和ext4SD卡
- 獲取SD卡序列號和廠商IDSD卡
- 針對Android訪問sd卡里面的音訊檔案AndroidSD卡音訊
- SD卡 TF卡 介面引腳定義SD卡
- android監聽SD卡掛載並獲取路徑AndroidSD卡
- Android定製ROM,內嵌su和xposedAndroid
- 判斷SD卡是否可用SD卡
- 手機SD卡修復SD卡
- SD卡資料恢復SD卡資料恢復
- SD(TF)卡原理設計
- 結構體資訊寫入SD卡,記憶體不連續結構體SD卡記憶體
- SD卡分割槽時需要注意什麼?SD卡分割槽注意事項SD卡
- 【工具向】大地圖場景測試,如何 diff 關卡檔案地圖
- SD卡中FAT32檔案格式快速入門(圖文詳細介紹)【轉】SD卡
- 向隨身碟寫檔案的C程式碼C程式
- 使用matlab生成rom初始化檔案.coeMatlab
- TC中開啟檔案和寫入檔案
- Linux-檔案寫入和檔案同步Linux
- Android程式函式 將assets資料夾下的檔案複製到手機的sd卡中(包括子資料夾)Android函式SD卡
- Android內部儲存和外部儲存,以及讀取Android讀取RAM,ROM內部儲存和外部儲存卡容量Android
- android中MK檔案的寫法Android