这是我制作的代码。它背后的逻辑是,我需要登录到第一个文件,直到它达到1500000(1.5mb)的长度,然后登录第二个文件,当两个文件都已满时,清除第一个日志文件并写入在它。
public static void appendLog(String text)
{
File dir = new File(Environment.getExternalStorageDirectory() + "/Passenger");
if (!dir.exists())
dir.mkdir();
File logFile = new File(Environment.getExternalStorageDirectory() + "/Passenger/passenger_log.txt");
File logFile2 = new File(Environment.getExternalStorageDirectory() + "/Passenger/passenger_log2.txt");
if (!logFile.exists())
{
try
{
logFile.createNewFile();
logFile2.createNewFile();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try
{
if(logFile.length() > 1500000 ) {
writeTo1 = false;
writeToLog(text, logFile2);
}else if (logFile.length() > 1500000 && logFile2.length() > 1500000 ){
logFile.delete();
logFile.createNewFile();
writeTo1 = true;
writeToLog(text, logFile);
} else{
writeTo1 = true;
writeToLog(text, logFile);
}
if(writeTo1 == true && logFile.length() > 800000){
logFile2.delete();
logFile2.createNewFile();
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
问题是它只记录第一个文件,我的逻辑中有什么错误?
答案 0 :(得分:0)
像这样改变它,现在它起作用了:
public static void appendLog(String text)
{
File dir = new File(Environment.getExternalStorageDirectory() + "/Passenger");
if (!dir.exists())
dir.mkdir();
File logFile = new File(Environment.getExternalStorageDirectory() + "/Passenger/passenger_log.txt");
File logFile2 = new File(Environment.getExternalStorageDirectory() + "/Passenger/passenger_log2.txt");
if (!logFile.exists())
{
try
{
logFile.createNewFile();
logFile2.createNewFile();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
if (logFile.length() > 1500000 && logFile2.length() > 1500000 ){
logFile.delete();
logFile.createNewFile();
writeTo1 = true;
writeToLog(text, logFile);
}else if(logFile.length() > 1500000 ) {
writeTo1 = false;
writeToLog(text, logFile2);
} else{
writeTo1 = true;
writeToLog(text, logFile);
}
if(writeTo1 == true && logFile.length() > 1500000 && logFile2.length() > 1500000){
logFile2.delete();
logFile2.createNewFile();
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
非常感谢Vandaics,你是对的,我改变了那些2,经过一些测试,我设法让它完美地运作