Android資料存放區方式之:檔案儲存體

來源:互聯網
上載者:User

Android資料存放區方式之:檔案儲存體

android應用大多數用的java開發,所以java的檔案操作在android中完全適用,只不過android對手機而言,多了個外儲存設定SD卡。

----------------------------------------------簡單的介面布局-----------------------------------------------------------

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

android:id="@+id/input_edt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="請輸入儲存內容" />

android:id="@+id/write_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="儲存資料" />


android:id="@+id/read_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="讀取資料" />

 

-----------------------------功能代碼-----------------------------------------------------------

public class MainActivity extends Activity implements OnClickListener {
/**內容輸入框 */
private EditText inputEdt;
/**儲存(寫入)按鈕 */
private Button writeBtn;
/**讀取按鈕 */
private Button readBtn;
/**要儲存的檔案名稱*/
private static final String FILE_NAME = "temp_file.txt";


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewsById();
}


private void findViewsById() {
inputEdt = (EditText) findViewById(R.id.input_edt);
writeBtn = (Button) findViewById(R.id.write_btn);
readBtn = (Button) findViewById(R.id.read_btn);
writeBtn.setOnClickListener(this);
readBtn.setOnClickListener(this);
}


@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.write_btn:
writeData();
break;
case R.id.read_btn:
String result = readData();
inputEdt.setText(result);
break;
}
}


/*
* 方法openFileOutput(FILE_NAME, Activity.MODE_PRIVATE); 參數說明:以FILE_NAME檔案名稱,Activity.MODE_PRIVATE檔案的應用模式,開啟一個輸出資料流如果檔案不存系統會為你建立一個 注意這裡的檔案名稱不能包括任何的/或者/這種分隔字元,只能是檔案名稱
* 該檔案會被儲存在/data/data/應用程式名稱/files/temp_file.txt 檔案的操作模式有以下四種:MODE_PRIVATE 私人(只能建立它的應用訪問) 重複寫入時會檔案覆蓋MODE_APPEND 私人 重複寫入時會在檔案的末尾進行追加,而不是覆蓋掉原來的檔案 MODE_WORLD_READABLE 公用 可讀 MODE_WORLD_WRITEABLE 公用 可讀寫
*/
private void writeData() {
String content = inputEdt.getText().toString();
try {


FileOutputStream outputStream = openFileOutput(FILE_NAME, Activity.MODE_PRIVATE);
outputStream.write(content.getBytes());
outputStream.flush();
outputStream.close();
Toast.makeText(MainActivity.this, "儲存成功", Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
}
}


/**
* 把剛剛儲存的資料讀出來
* */
private String readData() {
String content = "";
try {
FileInputStream inputStream = this.openFileInput(FILE_NAME);
byte[] bytes = new byte[1024];
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
while (inputStream.read(bytes) != -1) {
arrayOutputStream.write(bytes, 0, bytes.length);
}
inputStream.close();
arrayOutputStream.close();
content = new String(arrayOutputStream.toByteArray());


} catch (Exception e) {
e.printStackTrace();
}
return content;


}


/****************上面的內容是把內容存到手機記憶體中*************************************/
/**判斷SDcard是否存在並且可讀寫*/

private boolean isSDcardExist() {

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
return true;
} else {
Toast.makeText(getApplicationContext(), "記憶卡不可用", 1000).show();
return false;
}
}


/**往記憶卡中存檔案*/
public void writeToSDCard(String filename, String filecontent) throws Exception {
File file = new File(Environment.getExternalStorageDirectory(), filename);
FileOutputStream outStream = new FileOutputStream(file);
outStream.write(filecontent.getBytes());
outStream.close();
}


/**讀SD卡中對應檔案的內容*/
private String readSDCardFile(String filePath, String fileName) {
String result = "";
try {
File file = new File(filePath, fileName);
FileInputStream is = new FileInputStream(file);
byte[] b = new byte[is.available()];
is.read(b);
result = new String(b);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}

}

---------註:-------------------------------------------

SD卡操作不要忘記在AndroidManifest.xml中添加對應許可權:


聯繫我們

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