1、android 数据写入本地文件
/**
* 将数据保存到文件夹
*
* @param mData
*/
public static void saveDataFile(Context context,String mData) {
// 首先保存图片
String externalStorageState = Environment.getExternalStorageState();
//判断sd卡是否挂载
if (externalStorageState.equals(Environment.MEDIA_MOUNTED)) {
/*外部存储可用,则保存到外部存储*/
//创建一个文件夹
File appDir = new File(Environment.getExternalStorageDirectory(), "Movies");
//如果文件夹不存在
if (!appDir.exists()) {
//则创建这个文件夹
appDir.mkdir();
}
//将bitmap保存
save(mData, appDir);
} else {
//外部不可用,将图片保存到内部存储中,获取内部存储文件目录
File filesDir = context.getFilesDir();
//保存
save(mData, filesDir);
}
}
private static void save(String mData, File appDir) {
//命名文件名称
String fileName = "setDat" + ".text";
//创建图片文件,传入文件夹和文件名
File filePath = new File(appDir, fileName);
try {
//创建文件输出流,传入图片文件,用于输入bitmap
// FileOutputStream fos = new FileOutputStream(filePath); //基础上覆盖
FileOutputStream outputStream = new FileOutputStream(filePath,true); // 参数为true表示在原有的字符上追加字符串
// 写数据
if (!mData.isEmpty()){
outputStream.write(("" + mData).getBytes());
outputStream.write("\r\n".getBytes());// 换行
}
//刷新
outputStream.flush();
//关闭流
outputStream.close();
Log.d("HttpUtil","打印数据保存成功:"+mData);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
1.1 java存储
/**
* 存储 text
*
* @param destPath
* 文件全路径
* @param content
* 内容
*/
private void mkdirsSave(String destPath,String content) {
try {
File file = new File(destPath);
// 当文件夹不存在时,创建文件
if(!file.exists()){
file.createNewFile();
}
//true = append file 追加 不覆盖
FileWriter fileWritter = new FileWriter(file,true);
fileWritter.write(content+"\n");
fileWritter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("输入完成");
}
2、逐行读取
/**
* 读取文件
*
* @return
* @param appDir 文件路径
*/
public List<String> readFile(File appDir) {
String mReadData="";
//命名文件名称
String fileName = "setDat" + ".text";
//创建图片文件,传入文件夹和文件名
File file = new File(appDir, fileName);
List<String> arrayList = new ArrayList<>();
if (file.isDirectory()) {
Log.d("file", "The File doesn't not exist.");
} else {
try {
InputStream instream = new FileInputStream(file);
if (instream != null) {
//Log.d(Tag,"逐行数据: "+line);
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
// 逐行读取
while ((line = buffreader.readLine()) != null) {
StringBuilder builder = new StringBuilder(line);
arrayList.add(builder.toString());
}
// mReadData = "";
for (int i = 0; i < arrayList.size(); i++) {
mReadData += arrayList.get(i) + "\n";
}
Log.d("fileutil","Read the data: "+mReadData);
instream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return arrayList;
}
2.2、通过写入空字符串,清空文件数据
/**
* @param mData 空串
* 通过写入空字符串,达到清楚文件内数据
*/
private void cleanData(File appDir,String mData) {
//文件名称
String fileName = "setDat" + ".text";
//创建图片文件,传入文件夹和文件名
File filePath = new File(appDir, fileName);
try {
//基础上覆盖
FileOutputStream outputStream = new FileOutputStream(filePath);
// 写数据
if (!mData.isEmpty()){
outputStream.write(("" + mData).getBytes());
}
//冲刷流
outputStream.flush();
//关闭流
outputStream.close();
Log.d("fileUtil","打印-操作数据已清空:"+mData);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
3、android 图片存储,并通知相册加载
/**
* 将二维码图片保存到文件夹
*
* @param context
* @param bmp
*/
public static void saveImageToLocal(Context context, Bitmap bmp) {
// 首先保存图片
String externalStorageState = Environment.getExternalStorageState();
//判断sd卡是否挂载
if (externalStorageState.equals(Environment.MEDIA_MOUNTED)) {
/*外部存储可用,则保存到外部存储*/
//创建一个文件夹
File appDir = new File(Environment.getExternalStorageDirectory(), "Pictures");
//如果文件夹不存在
if (!appDir.exists()) {
//则创建这个文件夹
appDir.mkdir();
}
//将bitmap保存
save(context, bmp, appDir);
} else {
//外部不可用,将图片保存到内部存储中,获取内部存储文件目录
File filesDir = context.getFilesDir();
//保存
save(context, bmp, filesDir);
}
}
private static void save(Context context, Bitmap bmp, File appDir) {
//命名文件名称
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");// HH:mm:ss
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String format = dateFormat.format(date);
String fileName = format + ".jpg";
// String fileName = "扫码知内容" + ".jpg";
//创建图片文件,传入文件夹和文件名
File imagePath = new File(appDir, fileName);
try {
//创建文件输出流,传入图片文件,用于输入bitmap
FileOutputStream fos = new FileOutputStream(imagePath);
//将bitmap压缩成png,并保存到相应的文件夹中
bmp.compress(Bitmap.CompressFormat.PNG, 100, fos);
//冲刷流
fos.flush();
//关闭流
fos.close();
Toast.makeText(context,"保存完毕",Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 其次把文件插入到系统图库
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),
imagePath.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 最后通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + imagePath.getAbsolutePath())));
}
4、将源文件移动至另一文件下,并删除源文件 :
/*
* 剪切文件 选择的文件路径
* inputPath 源文件路径 绝对路径 D:\test.text
* outPath 目标文件路径
* */
public static void ChooseFileCut(String inputPath, String outPath) {
File inputFile = new File(inputPath);
File outFile = new File(outPath);
// 在程序结束时删除文件1
// inputFile.deleteOnExit();
try {
// 在D盘创建文件2
outFile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
cutFile(inputFile, outFile);
}
// 剪切文件 将文件1剪切入文件2中并删除源文件
public static void cutFile(File inputFile, File outFile) {
FileOutputStream mFileOutputStream = null;
InputStream mInputStream = null;
byte[] bytes = new byte[1024];
int temp = 0;
try {
mInputStream = new FileInputStream(inputFile);
mFileOutputStream = new FileOutputStream(outFile);
while ((temp = mInputStream.read(bytes)) != -1) {
mFileOutputStream.write(bytes, 0, temp);
mFileOutputStream.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (mInputStream != null) {
mInputStream.close();
}
if (mFileOutputStream != null) {
mFileOutputStream.close();
}
} catch (Exception e2) {
// TODO: handle exception
}
}
System.out.println("文件移动成功。。。");
inputFile.delete(); //删除
}
- 结束;