package com.tencent.wstt.gt.log.logcat;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import com.tencent.wstt.gt.api.utils.Env;
import com.tencent.wstt.gt.log.LogUtils;
import com.tencent.wstt.gt.ui.model.LogEntry;
public class SaveLogHelper {
private static final int BUFFER = 0x1000; // 4K
public static File getFile(String filename) {
File catlogDir = getCatlogDirectory();
File file = new File(catlogDir, filename);
return file;
}
public static Date getLastModifiedDate(String filename) {
File catlogDir = getCatlogDirectory();
File file = new File(catlogDir, filename);
if (file.exists()) {
return new Date(file.lastModified());
} else {
return new Date();
}
}
/**
* Get all the log filenames, order by last modified descending
* @return
*/
public static List<String> getLogFilenames() {
File catlogDir = getCatlogDirectory();
File[] filesArray = catlogDir.listFiles(new FileFilter(){
@Override
public boolean accept(File f) {
if (f != null && f.isFile() && f.getName().endsWith(LogUtils.LOG_POSFIX))
{
return true;
}
return false;
}});
if (filesArray == null) {
return Collections.emptyList();
}
List<File> files = new ArrayList<File>(Arrays.asList(filesArray));
Collections.sort(files, new Comparator<File>(){
@Override
public int compare(File object1, File object2) {
return Long.valueOf(object2.lastModified()).compareTo(object1.lastModified());
}});
List<String> result = new ArrayList<String>();
for (File file : files) {
result.add(file.getName());
}
return result;
}
public static LogEntry[] openLog(String filename, int maxLines) {
File catlogDir = getCatlogDirectory();
File logFile = new File(catlogDir, filename);
List<LogEntry> logLines = new ArrayList<LogEntry>();
BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(
new InputStreamReader(new FileInputStream(logFile)), BUFFER);
while (bufferedReader.ready()) {
String line = bufferedReader.readLine();
if (null != line)
{
LogEntry entry = new LogEntry();
entry.msg = line;
logLines.add(entry);
if (logLines.size() > maxLines) {
}
}
}
}
catch (IOException ex) {
ex.printStackTrace();
}
finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return logLines.toArray(new LogEntry[]{});
}
private static File getCatlogDirectory() {
File catlogDir = Env.ROOT_LOG_FOLDER;
if (!catlogDir.exists()) {
catlogDir.mkdir();
}
return catlogDir;
}
}