Android 追加和覆盖两种方式将byte[]写入文件
2017-10-30 16:47
731 查看
/
* 此方法为android程序写入sd文件文件,用到了android-annotation的支持库@
*
* @param buffer 写入文件的内容
* @param folder 保存文件的文件夹名称,如log;可为null,默认保存在sd卡根目录
* @param fileName 文件名称,默认app_log.txt
* @param append 是否追加写入,true为追加写入,false为重写文件
* @param autoLine 针对追加模式,true为增加时换行,false为增加时不换行
*/
public synchronized static void writeFileToSDCard(@NonNull final byte[] buffer, @Nullable final String folder,
@Nullable final String fileName, final boolean append, final boolean autoLine) {
new Thread(new Runnable() {
@Override
public void run() {
boolean sdCardExist = Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED);
String folderPath = "";
if (sdCardExist) {
//TextUtils为android自带的帮助类
if (TextUtils.isEmpty(folder)) {
//如果folder为空,则直接保存在sd卡的根目录
folderPath = Environment.getExternalStorageDirectory()
+ File.separator;
} else {
folderPath = Environment.getExternalStorageDirectory()
+ File.separator + folder + File.separator;
}
} else {
return;
}
File fileDir = new File(folderPath);
if (!fileDir.exists()) {
if (!fileDir.mkdirs()) {
return;
}
}
File file;
//判断文件名是否为空
if (TextUtils.isEmpty(fileName)) {
file = new File(folderPath + "app_log.txt");
} else {
file = new File(folderPath + fileName);
}
RandomAccessFile raf = null;
FileOutputStream out = null;
try {
if (append) {
//如果为追加则在原来的基础上继续写文件
raf = new RandomAccessFile(file, "rw");
raf.seek(file.length());
raf.write(buffer);
if (autoLine) {
raf.write("\n".getBytes());
}
} else {
//重写文件,覆盖掉原来的数据
out = new FileOutputStream(file);
out.write(buffer);
out.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (raf != null) {
raf.close();
}
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
}
* 此方法为android程序写入sd文件文件,用到了android-annotation的支持库@
*
* @param buffer 写入文件的内容
* @param folder 保存文件的文件夹名称,如log;可为null,默认保存在sd卡根目录
* @param fileName 文件名称,默认app_log.txt
* @param append 是否追加写入,true为追加写入,false为重写文件
* @param autoLine 针对追加模式,true为增加时换行,false为增加时不换行
*/
public synchronized static void writeFileToSDCard(@NonNull final byte[] buffer, @Nullable final String folder,
@Nullable final String fileName, final boolean append, final boolean autoLine) {
new Thread(new Runnable() {
@Override
public void run() {
boolean sdCardExist = Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED);
String folderPath = "";
if (sdCardExist) {
//TextUtils为android自带的帮助类
if (TextUtils.isEmpty(folder)) {
//如果folder为空,则直接保存在sd卡的根目录
folderPath = Environment.getExternalStorageDirectory()
+ File.separator;
} else {
folderPath = Environment.getExternalStorageDirectory()
+ File.separator + folder + File.separator;
}
} else {
return;
}
File fileDir = new File(folderPath);
if (!fileDir.exists()) {
if (!fileDir.mkdirs()) {
return;
}
}
File file;
//判断文件名是否为空
if (TextUtils.isEmpty(fileName)) {
file = new File(folderPath + "app_log.txt");
} else {
file = new File(folderPath + fileName);
}
RandomAccessFile raf = null;
FileOutputStream out = null;
try {
if (append) {
//如果为追加则在原来的基础上继续写文件
raf = new RandomAccessFile(file, "rw");
raf.seek(file.length());
raf.write(buffer);
if (autoLine) {
raf.write("\n".getBytes());
}
} else {
//重写文件,覆盖掉原来的数据
out = new FileOutputStream(file);
out.write(buffer);
out.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (raf != null) {
raf.close();
}
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
}
相关文章推荐
- Android 写文件 复写和追加 两种方式
- MFC中怎样将位图写入指定的Picture控件中,两种方式:1 加载已有位图 2读取位图文件;另外CreateDIBitmap的用法和StretchDIBits用法举例
- 以追加方式写入文件的几种方法
- java写文件时往末尾追加文件(而不是覆盖原文件),的两种方法总结
- Android加载布局文件的两种方式及区别。
- PHP以追加方式写入文件 file_put_content
- WEB-Android两种方式实现文件上传
- Android 生成keystore的两种方式(签名文件生成方式)
- android 向serverGet和Post请求的两种方式,android向server发送文件,自己组装协议和借助第三方开源
- android 向服务器Get和Post请求的两种方式,android向服务器发送文件,自己组装协议和借助第三方开源
- PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
- C# 使用覆盖文件的方式发送byte[]到指定的打印机
- xml文件解析类及Android项目中常用到的两种获取xml文件方式
- 写入出字符串到一个文件而不覆盖原文件的内容(追加)
- JAVA如何以追加的方式向文件中写入信息
- 文件写入覆盖和追加
- Android 生成含签名文件的apk安装包的两种方式
- Android中用FileWriter向SD卡写入文件时候如何在每行追加换行
- 追加写入的方式的 写 csv文件
- MFC中怎样将位图写入指定的Picture控件中,两种方式:1 加载已有位图 2读取位图文件;另外CreateDIBitmap的用法和StretchDIBits用法举例