Android开发中常用到的工具类——读写文件类

任何一门高级语言都免不了文件的读写操作,它们虽然都提供了输入输出流给我们使用,但用起来太麻烦,这里给大家分享一段安卓程序使用的文件读写类代码。

/**
* 判断SD卡是否可用
* @return SD卡可用返回true
*/
public static boolean hasSdcard() {
String status = Environment.getExternalStorageState();
return Environment.MEDIA_MOUNTED.equals(status);
}
/**
* 读取文件的内容
* <br>
* 默认utf-8编码
* @param filePath 文件路径
* @return 字符串
* @throws IOException
*/
public static String readFile(String filePath) throws IOException {
return readFile(filePath, "utf-8");
}
/**
* 读取文件的内容
* @param filePath 文件目录
* @param charsetName 字符编码
* @return String字符串
*/
public static String readFile(String filePath, String charsetName)
throws IOException {
if (TextUtils.isEmpty(filePath))
return null;
if (TextUtils.isEmpty(charsetName))
charsetName = "utf-8";
File file = new File(filePath);
StringBuilder fileContent = new StringBuilder("");
if (file == null || !file.isFile())
return null;
BufferedReader reader = null;
try {
InputStreamReader is = new InputStreamReader(new FileInputStream(
file), charsetName);
reader = new BufferedReader(is);
String line = null;
while ((line = reader.readLine()) != null) {
if (!fileContent.toString().equals("")) {
fileContent.append("/r/n");
}
fileContent.append(line);
}
return fileContent.toString();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 读取文本文件到List字符串集合中(默认utf-8编码)
* @param filePath 文件目录
* @return 文件不存在返回null,否则返回字符串集合
* @throws IOException
*/
public static List<String> readFileToList(String filePath)
throws IOException {
return readFileToList(filePath, "utf-8");
}
/**
* 读取文本文件到List字符串集合中
* @param filePath 文件目录
* @param charsetName 字符编码
* @return 文件不存在返回null,否则返回字符串集合
*/
public static List<String> readFileToList(String filePath,
String charsetName) throws IOException {
if (TextUtils.isEmpty(filePath))
return null;
if (TextUtils.isEmpty(charsetName))
charsetName = "utf-8";
File file = new File(filePath);
List<String> fileContent = new ArrayList<String>();
if (file == null || !file.isFile()) {
return null;
}
BufferedReader reader = null;
try {
InputStreamReader is = new InputStreamReader(new FileInputStream(
file), charsetName);
reader = new BufferedReader(is);
String line = null;
while ((line = reader.readLine()) != null) {
fileContent.add(line);
}
return fileContent;
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 向文件中写入数据
* @param filePath 文件目录
* @param content 要写入的内容
* @param append 如果为 true,则将数据写入文件末尾处,而不是写入文件开始处
* @return 写入成功返回true, 写入失败返回false
* @throws IOException
*/
public static boolean writeFile(String filePath, String content,
boolean append) throws IOException {
if (TextUtils.isEmpty(filePath))
return false;
if (TextUtils.isEmpty(content))
return false;
FileWriter fileWriter = null;
try {
createFile(filePath);
fileWriter = new FileWriter(filePath, append);
fileWriter.write(content);
fileWriter.flush();
return true;
} finally {
if (fileWriter != null) {
try {
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 向文件中写入数据<br>
* 默认在文件开始处重新写入数据
* @param filePath 文件目录
* @param stream 字节输入流
* @return 写入成功返回true,否则返回false
* @throws IOException
*/
public static boolean writeFile(String filePath, InputStream stream)
throws IOException {
return writeFile(filePath, stream, false);
}
/**
* 向文件中写入数据
* @param filePath 文件目录
* @param stream 字节输入流
* @param append 如果为 true,则将数据写入文件末尾处;
*              为false时,清空原来的数据,从头开始写
* @return 写入成功返回true,否则返回false
* @throws IOException
*/
public static boolean writeFile(String filePath, InputStream stream,
boolean append) throws IOException {
if (TextUtils.isEmpty(filePath))
throw new NullPointerException("filePath is Empty");
if (stream == null)
throw new NullPointerException("InputStream is null");
return writeFile(new File(filePath), stream,
append);
}
/**
* 向文件中写入数据
* 默认在文件开始处重新写入数据
* @param file 指定文件
* @param stream 字节输入流
* @return 写入成功返回true,否则返回false
* @throws IOException
*/
public static boolean writeFile(File file, InputStream stream)
throws IOException {
return writeFile(file, stream, false);
}
/**
* 向文件中写入数据
* @param file 指定文件
* @param stream 字节输入流
* @param append 为true时,在文件开始处重新写入数据;
*              为false时,清空原来的数据,从头开始写
* @return 写入成功返回true,否则返回false
* @throws IOException
*/
public static boolean writeFile(File file, InputStream stream,
boolean append) throws IOException {
if (file == null)
throw new NullPointerException("file = null");
OutputStream out = null;
try {
createFile(file.getAbsolutePath());
out = new FileOutputStream(file, append);
byte data[] = new byte[1024];
int length = -1;
while ((length = stream.read(data)) != -1) {
out.write(data, 0, length);
}
out.flush();
return true;
} finally {
if (out != null) {
try {
out.close();
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

将以上方法放进类里面就可以使用了,虽然代码不是很复杂,但也能节省不少时间。

关注代码狗博客,给你带来更多方法,快速构建你的程序。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/242076.html

(0)
上一篇 2022年4月7日 16:45
下一篇 2022年4月7日 16:45

相关推荐

发表回复

登录后才能评论