最初函数Attemps第一次工作正常,我在文件中详细说明请求并将内容移动到临时文件,然后我删除日志文件并重命名文件" temporaneo.txt" in" log.txt"。 如果你第二次启动这个功能,但似乎程序没有更多的成功,特别是日志文件没有被删除,文件" temporaneo.txt"没有在" log.txt"中重命名 为什么会这样?我弄错了程序?我真的不能处理它们,而这个功能第一次表现很好。
public void Attemps()throws IOException
{
try
{
BufferedReader in = new BufferedReader(new FileReader("log.txt"));
PrintWriter out = new PrintWriter(new File("temporaneo.txt"));
String line;
String params[];
while((line = in.readLine()) != null)
{
params = line.split(";", 2);
if(client.equals(params[0]))
{
int accessi_aggiornati = Integer.parseInt(params[1]);
accessi_aggiornati--;
params[1] = String.valueOf(accessi_aggiornati);
out.print(params[0] + ";" + params[1]);
}
else
{
out.println(line);
}
}
in.flush(); //log
out.flush(); //temporaneo
in.close();
out.close();
//Delete log and rename temporary file
File f1 = new File("log.txt");
f1.delete();
File f2 = new File("temporaneo.txt");
f2.renameTo(f1);
System.out.println("Update complete");
}catch(Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:0)
您正在将log.txt文件的内容复制到temporaneo.txt - >然后删除log.txt文件 - >然后将temporaneo.txt名称重命名为log.txt
所以,最后你有log.txt文件,内容相同。
最终代码如下: -
public void Attemps() {
try {
BufferedReader in = new BufferedReader(new FileReader(
"log.txt"));
PrintWriter out = new PrintWriter(new File("temporaneo.txt"));
String line;
String params[];
while((line = in.readLine()) != null)
{
params = line.split(";", 2);
if(client.equals(params[0]))
{
int accessi_aggiornati = Integer.parseInt(params[1]);
accessi_aggiornati--;
params[1] = String.valueOf(accessi_aggiornati);
out.print(params[0] + ";" + params[1]);
}
else
{
out.println(line);
}
}
// in.flush(); // log
out.flush(); // temporaneo
in.close();
out.close();
// Delete log and rename temporary file
File f1 = new File("log.txt");
f1.delete();
boolean isCreated = f1.createNewFile();
System.out.println("Update complete=" + isCreated);
} catch (Exception e) {
e.printStackTrace();
}
}
答案 1 :(得分:-1)
BufferedReader并不知道名为" flush()"的方法。 - Java 7或8中的更新版本。 删除它,一切都应该正常。