File 內(nèi)部存儲 使用詳解

和你一起終身學習,這里是程序員Android
經(jīng)典好文推薦,通過閱讀本文,您將收獲以下知識點:
一、內(nèi)部存儲的保存路徑
二、內(nèi)部存儲的(保存,讀?。┦褂梅椒?br style="box-sizing: border-box;">三、內(nèi)部存儲的Demo
四、內(nèi)部存儲的其他方法
Android?可以直接保存文件到內(nèi)部存儲,保存在內(nèi)部存儲的文件是應用的私有文件,其他應用無法訪問,當app被卸載時候,文件也會被刪除掉。內(nèi)部存儲經(jīng)常以文件的形式保存。
一、內(nèi)部存儲的保存路徑
內(nèi)部存儲保存路徑如下:/data/data/com.**包名/files/文件名
二、內(nèi)部存儲的(保存,讀?。┦褂梅椒?/h1>1. 保存文件的方法
文件保存的常用方法如下:
1.使用文件名稱和操作模式調(diào)用?
openFileOutput()。
這將返回一個?FileOutputStream。2.使用?
write()?寫入到文件。3.使用?
close()?關(guān)閉流式傳輸。
// 1.保存文件方法
private void SaveFile() {
String filename = etname.getText().toString().trim();
String filecontent = etcontent.getText().toString().trim();
if (TextUtils.isEmpty(filename) || TextUtils.isEmpty(filecontent)) {
Toast.makeText(getApplicationContext(), "文件名不能為空",
Toast.LENGTH_LONG).show();
return;
}
// 打開一個用來讀寫的文件,該文件與當前上下文所在的包相關(guān),調(diào)用該方法不需要添加任何全選,
// 保存在手機內(nèi)部存儲中
try {
// 打開輸出流,并創(chuàng)建文件
FileOutputStream fos = openFileOutput(filename, MODE_PRIVATE);
// 輸入的內(nèi)容保存到文件中
fos.write(filecontent.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_LONG)
.show();
etname.setText("");
etcontent.setText("");
}
2. 讀取 File 內(nèi)容的方法
讀取 File 內(nèi)容的方法如下:
1.調(diào)用?openFileInput()并向其傳遞要讀取的文件名稱。這將返回一個?FileInputStream。
2.使用read()?讀取文件字節(jié)。
3.然后使用close()關(guān)閉流式傳輸。
// 2.打開文件方法
private void OpenFile() {
String filename = etname.getText().toString().trim();
if (TextUtils.isEmpty(filename)) {
Toast.makeText(getApplicationContext(), "文件名不能為空",
Toast.LENGTH_LONG).show();
return;
}
try {
// 打開文件得到一個只讀的輸入流,
FileInputStream fis = openFileInput(filename);
// 將文件內(nèi)容存放的byte數(shù)組中
byte[] buffer = new byte[fis.available()];
// 讀取數(shù)組中的內(nèi)容
fis.read(buffer);
fis.close();
// 將數(shù)組內(nèi)容存放到字符串中,并顯示出來
etcontent.setText(new String(buffer));
} catch (Exception e) {
e.printStackTrace();
}
}
3.刪除文件的方法
如需刪除文件,可以根據(jù)文件名刪除?deleteFile(filename);
// 3.刪除文件方法
private void DeleteFile() {
String filename = etname.getText().toString().trim();
if (TextUtils.isEmpty(filename)) {
Toast.makeText(getApplicationContext(), "文件名不能為空",
Toast.LENGTH_LONG).show();
return;
}
// 刪除上下文中指定名稱的文件,
boolean deletefile = deleteFile(filename);
if (deletefile) {
Toast.makeText(getApplicationContext(), "刪除成功", Toast.LENGTH_LONG)
.show();
}
}
三、內(nèi)部存儲的案例
1.實現(xiàn)效果如下:
實現(xiàn)文件的保存、讀取、刪除功能

內(nèi)部存儲使用
2. 實現(xiàn)代碼如下:
public class FileInternalStorageMethods extends Activity implements
OnClickListener {
/*
* 內(nèi)部存儲的方法FileOutputStream(filename, MODE_PRIVATE);
* FileInputStream(filename); deleteFile(filename); 文件保存位置:
* /data/data/包名/files/文件名 內(nèi)部存儲的特點:內(nèi)部存儲里的東西會隨著app的卸載而清掉
*
* *
*/
private EditText etname, etcontent;
private Button savebtn, openbtn, deletebtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_internal_methods);
InitView();
}
private void InitView() {
etname = (EditText) findViewById(R.id.editfilename);
etcontent = (EditText) findViewById(R.id.edit_filecontext);
savebtn = (Button) findViewById(R.id.savefile);
openbtn = (Button) findViewById(R.id.openfile);
deletebtn = (Button) findViewById(R.id.deletefile);
savebtn.setOnClickListener(this);
openbtn.setOnClickListener(this);
deletebtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.savefile:
SaveFile();
break;
case R.id.openfile:
OpenFile();
break;
case R.id.deletefile:
DeleteFile();
break;
default:
break;
}
}
// 1.保存文件方法
private void SaveFile() {
String filename = etname.getText().toString().trim();
String filecontent = etcontent.getText().toString().trim();
if (TextUtils.isEmpty(filename) || TextUtils.isEmpty(filecontent)) {
Toast.makeText(getApplicationContext(), "文件名不能為空",
Toast.LENGTH_LONG).show();
return;
}
// 打開一個用來讀寫的文件,該文件與當前上下文所在的包相關(guān),調(diào)用該方法不需要添加任何全選,
// 保存在手機內(nèi)部存儲中
try {
// 打開輸出流,并創(chuàng)建文件
FileOutputStream fos = openFileOutput(filename, MODE_PRIVATE);
// 輸入的內(nèi)容保存到文件中
fos.write(filecontent.getBytes());
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_LONG)
.show();
etname.setText("");
etcontent.setText("");
}
// 2.打開文件方法
private void OpenFile() {
String filename = etname.getText().toString().trim();
if (TextUtils.isEmpty(filename)) {
Toast.makeText(getApplicationContext(), "文件名不能為空",
Toast.LENGTH_LONG).show();
return;
}
try {
// 打開文件得到一個只讀的輸入流,
FileInputStream fis = openFileInput(filename);
// 將文件內(nèi)容存放的byte數(shù)組中
byte[] buffer = new byte[fis.available()];
// 讀取數(shù)組中的內(nèi)容
fis.read(buffer);
fis.close();
// 將數(shù)組內(nèi)容存放到字符串中,并顯示出來
etcontent.setText(new String(buffer));
} catch (Exception e) {
e.printStackTrace();
}
}
// 3.刪除文件方法
private void DeleteFile() {
String filename = etname.getText().toString().trim();
if (TextUtils.isEmpty(filename)) {
Toast.makeText(getApplicationContext(), "文件名不能為空",
Toast.LENGTH_LONG).show();
return;
}
// 刪除上下文中指定名稱的文件,
boolean deletefile = deleteFile(filename);
if (deletefile) {
Toast.makeText(getApplicationContext(), "刪除成功", Toast.LENGTH_LONG)
.show();
}
}
}
3. 實現(xiàn)布局 如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/editfilename"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:background="@android:drawable/edit_text"
android:hint="請輸入文件名"
android:padding="5dp"
android:textSize="20sp" />
<Button
android:id="@+id/savefile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:padding="5dp"
android:text="保存"
android:textSize="25sp" />
<Button
android:id="@+id/openfile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:padding="5dp"
android:text="打開"
android:textSize="25sp" />
LinearLayout>
<Button
android:id="@+id/deletefile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="5dp"
android:text="刪除文件"
android:textSize="25sp" />
<EditText
android:id="@+id/edit_filecontext"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@android:drawable/edit_text"
android:gravity="left"
android:hint="請輸入文件內(nèi)容"
android:padding="5dp"
android:textSize="20sp" />
LinearLayout>
四、 內(nèi)部存儲的其他方法
1. 獲取在其中存儲內(nèi)部文件的文件系統(tǒng)目錄的絕對路徑。
getFilesDir()
2. 在您的內(nèi)部存儲空間內(nèi)創(chuàng)建(或打開現(xiàn)有的)目錄。
getDir()
3. 返回您的應用當前保存的一系列文件。
fileList()至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺得很優(yōu)秀,歡迎點擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請聯(lián)系小編刪除。同時感謝您的閱讀,期待您的關(guān)注。
