Java文件 - 新更新的文件出现在一行中

时间:2012-12-03 10:16:03

标签: java newline java-io

我正在尝试使用带有新数据的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,但新文件将在一行中,正如我之前解释的那样。

1 个答案:

答案 0 :(得分:6)

在某些操作系统(通常为Windows)上,您需要使用\r\n作为新行。更好的是,您可以使用:

String newLine = System.getProperty("line.separator");

表示行分隔符,它将根据运行的平台进行调整。