文件存储一般可以存较大的东西,如文本,图片或者音频视频
Talk is cheap ,show you the code
public class MainActivity extends ActionBarActivity {
// 写出文件名
private EditText filenameText;
// 写出文件内容
private EditText filecontentText;
// 读取文件内容
private TextView showContent;
private Server server;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
filenameText = (EditText) findViewById(R.id.fileName);
filecontentText = (EditText) findViewById(R.id.fileContent);
showContent = (TextView) findViewById(R.id.content);
server = new Server();
// 保存到非SD卡
findViewById(R.id.writeLocBtn).setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View arg0) {
String fileName = filenameText.getText().toString();
String fileContent = filecontentText.getText()
.toString();
try {
server.writeToLoc(fileName, fileContent);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// 保存到SD卡
findViewById(R.id.writeSDBtn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String fileName = filenameText.getText().toString();
String fileContent = filecontentText.getText().toString();
try {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
server.writeToSD(fileName, fileContent);
} else {
Toast.makeText(getApplicationContext(),
R.string.SDfail, 1).show();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// 读本地非SD卡文件
findViewById(R.id.readLocBtn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String fileName = filenameText.getText().toString();
try {
showContent.setText(server.readLoc(fileName));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// 读SD卡文件
findViewById(R.id.readSDBtn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String fileName = filenameText.getText().toString();
try {
showContent.setText(server.readSD(fileName));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
// 删除本机非SD卡文件
findViewById(R.id.delLocBtn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String fileName = filenameText.getText().toString();
server.delLocFile(fileName);
}
});
// 删除SD文件
findViewById(R.id.delSDBtn).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String fileName = filenameText.getText().toString();
server.delSDFile(fileName);
}
});
}
private class Server {
// 往本机非SD卡存储
// 文件an路径为data/data/"packagename"/filename
void writeToLoc(String filename, String filecontent) throws Exception {
/*
* 存储分为很多模式 MODE_PRIVATE:只能本应用读取,写入的时候为覆盖
* MODE_APPEND:只能本应用读取,写入时为追加,如没有该文件创建新文件
* MODE_WORLD_WRITEABLE:其它应用可写入 MODE_WORLD_READABLE:其它应用可读取
* MODE_WORLD_WRITEABLE + MODE_WORLD_READABLE:写 + 读
*/
FileOutputStream outStream = MainActivity.this.openFileOutput(
filename, Context.MODE_PRIVATE);
outStream.write(filecontent.getBytes());
outStream.close();
}
// 往本机SD卡存储
void writeToSD(String filename, String filecontent) throws Exception {
// 获得SD卡对应的存储目录
File file = new File(Environment.getExternalStorageDirectory()
.getCanonicalPath(), filename);
FileOutputStream outStream = new FileOutputStream(file);
outStream.write(filecontent.getBytes());
outStream.close();
}
// 读取非SD卡中文件
String readLoc(String filename) throws Exception {
// 判断是否存在该文件
File file = new File(MainActivity.this.getFilesDir().getPath(),
filename);
if (file.exists() && file.isFile()) {
FileInputStream inStream = MainActivity.this
.openFileInput(filename);
BufferedReader br = new BufferedReader(new InputStreamReader(
inStream));
StringBuilder sb = new StringBuilder("");
String line = null;
// 循环读取文件内容
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
return sb.toString();
} else {
Toast.makeText(getApplicationContext(), R.string.non_existent,
1).show();
return null;
}
}
// 读取SD卡中文件
String readSD(String filename) throws Exception {
// 先判断SD卡是否存在,并且是否具有读写权限
File file = new File(Environment.getExternalStorageDirectory(),
filename);
if (!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
Toast.makeText(getApplicationContext(), R.string.SDfail, 1)
.show();
return null;
// 再判断是否存在该文件
} else if (file.exists() && file.isFile()) {
FileInputStream inStream = new FileInputStream(Environment
.getExternalStorageDirectory().getCanonicalPath()
+ "//" + filename);
BufferedReader br = new BufferedReader(new InputStreamReader(
inStream));
StringBuilder sb = new StringBuilder("");
String line = null;
// 循环读取文件内容
while ((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
return sb.toString();
} else {
Toast.makeText(getApplicationContext(), R.string.non_existent,
1).show();
return null;
}
}
// 删除本机非SD卡中的文件
void delLocFile(String filename) {
// MainActivity.this.getFilesDir().getPath() 获取data下files路径
File file = new File(MainActivity.this.getFilesDir().getPath(),
filename);
if (file.exists() && file.isFile()) {
file.delete();
} else {
Toast.makeText(getApplicationContext(), R.string.non_existent,
1).show();
}
}
// 删除SD卡中的文件
void delSDFile(String filename) {
// Environment.getExternalStorageDirectory().getPath() 获取SD卡路径
File file = new File(Environment.getExternalStorageDirectory()
.getPath(), filename);
if (file.exists() && file.isFile()) {
file.delete();
} else {
Toast.makeText(getApplicationContext(), R.string.non_existent,
1).show();
}
}
}
}
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<EditText
android:id="@+id/fileName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text" />
<EditText
android:id="@+id/fileContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text" />
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/writeLocBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/saveLocBtn" />
<Button
android:id="@+id/writeSDBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/saveSDBtn" />
<Button
android:id="@+id/readLocBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/readLocBtn" />
<Button
android:id="@+id/readSDBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/readSDBtn" />
<Button
android:id="@+id/delLocBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/delLocBtn" />
<Button
android:id="@+id/delSDBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/delSDBtn" />