文件操作所需要的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
package com.example.administrator.myapplication;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
/**
* AndroidManifest添加写入数据的权限
* Andriod 23以后,就算是添加权限也需要在使用时动态请求,否则文件操作会失败
* 外部存储:
* 保存外部SD卡中,使用之前确定SD卡可用
* 确保当前SD卡可用
* 获取SD卡的根路径
* 创建文件对象,由于不同手机SDcard目录不同,
* 所以我们通过Environment.getExternalStorageDirectory()获得路径。
*/
public class FileoperationActivity extends AppCompatActivity {
//一级文件夹路径
public final static String Folder_NAME = Environment.getExternalStorageDirectory() + File.separator + "HelloTest";
//二级文件夹路径
public final static String Second_PATH = Folder_NAME + File.separator + "SecondFolder" + File.separator;
//文件路径
public static final String FILE_NAME = Folder_NAME + File.separator + "HelloTest.txt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fileoperation);
FolderCreate();
FileCreate();
FileWrite();
FileRead();
}
/**
* 文件夹创建
*/
private void FolderCreate() {
//mkdirs()可以建立多级文件夹, mkdir()只会建立一级的文件夹
File dirFirstFolder = new File(Second_PATH);
if (!dirFirstFolder.exists()) {
dirFirstFolder.mkdirs();
}
}
/**
* 文件创建
*/
private void FileCreate() {
File file = new File(FILE_NAME);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 文件的写入
*/
private void FileWrite() {
File file = new File(FILE_NAME);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
FileOutputStream fos = new FileOutputStream(file);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
bw.write(System.currentTimeMillis() + "你好啊");
bw.flush();
bw.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 文件的读取
*/
private void FileRead() {
try {
File file = new File(FILE_NAME);
BufferedReader br = new BufferedReader(new FileReader(file));
String readline = "";
StringBuffer sb = new StringBuffer();
while ((readline = br.readLine()) != null) {
System.out.println("readline:" + readline);
sb.append(readline);
}
br.close();
System.out.println("读取成功:" + sb.toString());
Toast.makeText(this, sb, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
|