我正在尝试使用带有新数据的Java更新文件。假设我有一个txt文件,我保存了以下数据:
id grade
3498 8
2345 9
5444 7
2222 5
所以我尝试更新成绩,具体取决于用户输入的ID,但新的(更新的)文件具有以下类型:
id grade3498 62345 95444 72222 5
依旧......
我找不到这个原因不起作用的原因,我猜这与在重写数据时不添加新行有关,但即使我添加新行字符(“\ n”) outobj.write(fileContent.toString());没有什么变化。
以下是我的代码片段:
public String check(int num) throws RemoteException
{
String textinLine;
String texttoEdit;
File file=new File ("c:\\students.txt");
FileInputStream stream = null;
DataInputStream in =null;
BufferedReader br = null;
try
{
stream = new FileInputStream(file);
in =new DataInputStream(stream);
br = new BufferedReader(new InputStreamReader(in));
StringBuilder fileContent = new StringBuilder();
if ((num>0) && (num<6001))
{
while ((textinLine=br.readLine())!=null)
{
texttoEdit=Integer.toString(num);
System.out.println(textinLine);
String[] parts = textinLine.split(" ");
if (parts.length>0)
{
if (parts[0].equals(texttoEdit))
{
int value = Integer.parseInt(parts[1]);
value-=2;
String edit=Integer.toString(value);
String newLine = "\n"+parts[0]+" "+edit+"\n";
msg="You can pass2";
fileContent.append(newLine);
fileContent.append("\n"); }
else
{
fileContent.append(textinLine);
fileContent.append("\n");
}
}
}
}
in.close();
FileWriter fstream = new FileWriter(file);
BufferedWriter outobj = new BufferedWriter(fstream);
outobj.write(fileContent.toString());
outobj.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
最后,让我说新文件是正确编辑的,这意味着如果用户输入id 3498,等级值将更改为8-2 = 6,但新文件将在一行中,正如我之前解释的那样。
答案 0 :(得分:6)
在某些操作系统(通常为Windows)上,您需要使用\r\n
作为新行。更好的是,您可以使用:
String newLine = System.getProperty("line.separator");
表示行分隔符,它将根据运行的平台进行调整。