将文本附加到现有文件而不覆盖它

时间:2015-03-07 03:21:22

标签: java nio

我将一些内容添加到现有文件NameList.txt中,该文件已包含一些文字。

但是当我运行该程序时,它会在开始编写新内容之前删除所有现有内容。

注意:我也试着找到文件结束行的位置。例如。使用while ((lines = reader.readLine()) == null),其中lines变量的类型为String

public class AddBooks {

    public static void main(String[] args) {

        Path Source = Paths.get("NameList.txt");

        Charset charset = Charset.forName("Us-ASCII");
        try (
            BufferedWriter write = Files.newBufferedWriter(Source, charset);
            BufferedReader reader = Files.newBufferedReader(Source, charset);
        ) {
            Scanner input = new Scanner(System.in);
            String s;
            String line;
            int i = 0, isEndOfLine;

            do {
                System.out.println("Book Code");
                s = input.nextLine();
                write.append(s, 0, s.length());
                write.append("\t \t");

                System.out.println("Book Title");
                s = input.nextLine();
                write.append(s, 0, s.length());
                write.append("\t \t");

                System.out.println("Book Publisher");
                s = input.nextLine();
                write.append(s, 0, s.length());
                write.newLine();

                System.out.println("Enter more Books? y/n");
                s = input.nextLine();

            } while(s.equalsIgnoreCase("y"));
        } catch (Exception e) {
            // TODO: handle exception
        }
    }
}

我唯一的要求是向现有文件添加新内容。

1 个答案:

答案 0 :(得分:1)

像这样更改你的代码!

BufferedWriter write = Files.newBufferedWriter(Source, charset, StandardOpenOption.APPEND);

看到这个! StandardOpenOption

第二..

 while ((str = in.readLine()) != null)

附录..插入

writer.close();

} while(s.equalsIgnoreCase("y"));