Android使用java实现以下功能:输出log到文件,每个文件限制大小为10K,最多生成5个文件,如果超出5个文件,判断最老的文件删除,并重新创建文件
时间: 2024-05-04 20:20:02 浏览: 21
以下是Java实现输出log到文件,每个文件限制大小为10K,最多生成5个文件,如果超出5个文件,判断最老的文件删除,并重新创建文件的代码:
```java
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class LogToFile {
private static final String LOG_PATH = "log/";
private static final int MAX_FILE_COUNT = 5;
private static final int MAX_FILE_SIZE = 10 * 1024; // 10K
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static int mFileCount = 0;
private static File mCurrentLogFile = null;
private static BufferedWriter mWriter = null;
public static void log(String message) {
try {
if (mCurrentLogFile == null) {
openNewLogFile();
}
if (mCurrentLogFile.length() >= MAX_FILE_SIZE) {
closeLogFile();
openNewLogFile();
}
mWriter.write(DATE_FORMAT.format(Calendar.getInstance().getTime()) + " " + message + "\n");
mWriter.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void openNewLogFile() {
closeLogFile();
if (mFileCount >= MAX_FILE_COUNT) {
deleteOldestLogFile();
}
File logDir = new File(LOG_PATH);
if (!logDir.exists()) {
logDir.mkdirs();
}
mCurrentLogFile = new File(logDir, "log_" + mFileCount + ".txt");
mFileCount++;
try {
mWriter = new BufferedWriter(new FileWriter(mCurrentLogFile));
} catch (IOException e) {
e.printStackTrace();
}
}
private static void closeLogFile() {
if (mWriter != null) {
try {
mWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
mWriter = null;
}
}
private static void deleteOldestLogFile() {
File oldestLogFile = new File(LOG_PATH, "log_0.txt");
for (int i = 1; i < MAX_FILE_COUNT; i++) {
File logFile = new File(LOG_PATH, "log_" + i + ".txt");
if (logFile.lastModified() < oldestLogFile.lastModified()) {
oldestLogFile = logFile;
}
}
oldestLogFile.delete();
}
}
```
使用时,可以通过调用`LogToFile.log(message)`来输出log到文件。需要注意的是,需要在AndroidManifest.xml中添加`<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />`权限才能在外部存储中创建文件。