参考地址:https://blog.csdn.net/harry_helei/article/details/64910713
1.按行读取指定文件
/**
* 按行读取指定文件,输出到ArrayList
*/
public static void readDataFromFile(String fileName) {
if (fileName == null) return;
File file = new File("/storage/emulated/0/" + fileName);//从内存根目录读取文件
if (file.isDirectory()) {
System.out.println(fileName + " is directory");
return;
} else {
try {
InputStream inputStream = new FileInputStream(file);
if (is != null) {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream );
BufferedReader bfReader= new BufferedReader(inputStreamReader );
String strLine;
List strList = new ArrayList();
while ((strLine= bfReader.readLine()) != null) {
System.out.println(strLine);
strList.add(strLine);//添加到strList中,方便数据处理
}
}
} catch (FileNotFoundException e) {
System.out.println(fileName + " doesn't found!");
} catch (IOException e) {
System.out.println(fileName + " read exception, " + e.getMessage());
}
}
}
2.向指定文件写入数据
/**
* 字符串保存到手机内存设备中
*
* @param str
*/
public static void saveFile(String str, String fileName) {
// 创建String对象保存文件名路径
try {
// 创建指定路径的文件
File file = new File(Environment.getExternalStorageDirectory(), fileName);
// 如果文件不存在
if (file.exists()) {
// 创建新的空文件
if (file.delete()) {
System.out.println("success");
}
}
if (file.createNewFile()) {
// 获取文件的输出流对象
FileOutputStream outStream = new FileOutputStream(file);
// 获取字符串对象的byte数组并写入文件流
outStream.write(str.getBytes());
// 最后关闭文件输出流
outStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* write data to txt
*/
public static void writeStringToTxt(byte[] array, String fileName) throws IOException {
// 第1步、使用File类找到一个文件
File f = new File("/storage/emulated/0/" + File.separator + fileName); // 声明File对象
// 第2步、通过子类实例化父类对象
Writer out; // 准备好一个输出的对象
out = new FileWriter(f, true); // 通过对象多态性,进行实例化
// 第3步、进行写操作
String str = new String(array) + "\n";
out.write(str);// 将内容输出,保存文件
// 第4步、关闭输出流
out.close();// 关闭输出流
}