package com.jqyd.android.module.lbs.util;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import android.os.Environment;
public class WriteFile {
public static String logStr = "DSDW";
private String fileName;
private static String currDay = null;
public WriteFile(String fileName) {
this.fileName = fileName;
currDay = JqydDateUtil.getDateDayOne(new Date());
}
/**
* 写入日志
* @param content
* @return
*/
public boolean writeToFile(String content) {
boolean flag = true;
content = JqydDateUtil.getDateSecOne(new Date())+"\t"+content+"\n";
File dirfile = new File(Environment.getExternalStorageDirectory()
.getPath() + "/" + logStr+ File.separator + "lxsb_recordLog");
if (!dirfile.exists()) {
System.out.println("创建文件夹"+dirfile.mkdirs());
}
File file = new File(Environment.getExternalStorageDirectory()
.getPath() + "/" + logStr+ File.separator + "lxsb_recordLog" + "/" + fileName + ".txt");
try {
FileOutputStream fos = new FileOutputStream(file, true);
byte[] ba = content.getBytes("utf-8");
content = new String(ba);
fos.write(content.getBytes());
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
/**
* 删除文件
*/
public void deleteFile(){
ArrayList<File> delFileName = new ArrayList<File>();
try {
File recorDirfile = new File(Environment.getExternalStorageDirectory()
.getPath() + "/" + logStr+ File.separator + "lxsb_recordLog");
File errDirfile = new File(Environment.getExternalStorageDirectory()
.getPath() + "/" + logStr+ File.separator + "lxsb_errLog");
File errfile = new File(Environment.getExternalStorageDirectory()
.getPath() + "/" + logStr);
File file = null;
File recordFileArr[] = recorDirfile.listFiles();
int df = 0;
for(int i=0;i<recordFileArr.length;i++){
file = recordFileArr[i];
String fileDate = JqydDateUtil.getDateDayOne(new Date(file.lastModified()));
System.out.println("文件名:"+file.getName());
System.out.println("转换后的日期:"+fileDate);
//判断文件和制定日期的关系,删除最近的七天之外的数据
long day = getQuot(fileDate,currDay);
if(day>=7){
df++;
delFileName.add(file);
}
}
System.out.println("删除的记录日志数:"+df);
String log = "操作日期:"+JqydDateUtil.getDateSecTwo(new Date())+"---删除的日志记录数:"+df;
//错误日志
File errFileArr[] = errDirfile.listFiles();
df = 0;
for(int i=0;i<errFileArr.length;i++){
file = errFileArr[i];
String fileDate = JqydDateUtil.getDateSecTwo(new Date(file.lastModified()));
System.out.println("错误日志文件名:"+file.getName());
System.out.println("错误日志转换后的日期:"+fileDate);
//判断文件和制定日期的关系,删除最近的七天之外的数据
long day = getQuot(fileDate,currDay);
if(day>=7){
df++;
delFileName.add(file);
}
}
System.out.println("需要删除的错误日志数:"+df);
///系统异常日志
File errorFileArr[] = errfile.listFiles();
df = 0;
for(int i=0;i<errorFileArr.length;i++){
file = errorFileArr[i];
String fileDate = JqydDateUtil.getDateSecTwo(new Date(file.lastModified()));
System.out.println("错误日志文件名:"+file.getName());
System.out.println("错误日志转换后的日期:"+fileDate);
//判断文件和制定日期的关系,删除最近的七天之外的数据
long day = getQuot(fileDate,currDay);
if(day>=7){
df++;
delFileName.add(file);
}
}
System.out.println("需要删除的错误日志数:"+df);
//执行删除操作
int del = 0;
for(File f : delFileName){
del++;
boolean dres = f.delete();
System.out.println("第"+del+"个文件,删除结果:"+dres);
}
log += ",删除的错误日志记录数:"+del;
writeToFile(log);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
writeToFile("没有SD卡,无法获取或写入日志");
}
}
/**
* 计算相差天数
* @param time1
* @param time2
* @return
*/
public long getQuot(String time1, String time2){
long quot = 0;
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date1 = ft.parse(time1);
Date date2 = ft.parse(time2);
quot = date2.getTime() - date1.getTime();
quot = quot / 1000 / 60 / 60 / 24;
} catch (ParseException e) {
e.printStackTrace();
}
return quot;
}
}