我需要为我的应用创建逻辑以登录2个文件,但它只记录一个

时间:2015-04-22 10:51:09

标签: android file logging error-logging writetofile

这是我制作的代码。它背后的逻辑是,我需要登录到第一个文件,直到它达到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();
    }
}

问题是它只记录第一个文件,我的逻辑中有什么错误?

1 个答案:

答案 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,经过一些测试,我设法让它完美地运作