java - 使用字符串更新 .txt 文件

标签 java file-io arraylist java.util.scanner printwriter

我正在尝试编写一种方法,用新的字符串更新 .txt 文件......我所做的就是 1)从之前创建的 txt 文件中读取所有字符串 2)将它们放入数组列表中 3) 将一个新字符串写入arraylist 4) 然后将该 arraylist 的 toString() 对象写入新文件

即使我编辑多行文件,它也只将最新的字符串写入文件,而不写入其他字符串

这是我所拥有的:

public static void updateNames(String newName) throws FileNotFoundException {
        name = new File("names.txt");
        infile = new Scanner(name);
        ArrayList<String> nameslist = new ArrayList<>();
        while(infile.hasNext()) {
            nameslist.add(infile.nextLine());
        }
        infile.close();
        nameslist.add(newName);
        names = new PrintWriter("names.txt");
        for(int i=0;i<nameslist.size();i++) {
            names.println(nameslist.get(i).toString());
        }
        names.close();
        System.out.println("else");
    }

为了尽可能清楚地说明,{name、names 和 infile} 在类的开头都声明为 static void

提前感谢您的帮助

最佳答案

使用infile.hasNextLine()代替infile.hasNext()

改变

   while(infile.hasNext())

  while(infile.hasNextLine())

和小修正

改变

 names.println(nameslist.get(i).toString());

 names.println(nameslist.get(i)); //nameslist holds String objects no need to convert to String again.

如果问题没有解决,请添加 countline 变量并确保从文件中读取了多少行。

 int countline;
 while(infile.hasNext()) {
     nameslist.add(infile.nextLine());
     countline++;        
 }     
 System.out.println("Number of line: "+ countline);

关于java - 使用字符串更新 .txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20237356/

相关文章:

java - 返回空指针异常 - Java Selenium Webdriver

java - 如何使用Xodus删除实体类型?

Python - 从文件中读取第二列

c - 编辑文件扫描器以仅扫描每个文件的前 .01MB

javascript - 在客户端 JS 中解析二进制文件

JAVA——关于ArrayList

Java:数组索引越界

java - Java 是一种编写简单机器人/守护进程的好语言吗(当 RAM 有限时!)?

Java ProcessBuilder().start() 与 NodeJS require ('child_process' ).spawn()

java - 使用 Random 作为 ArrayList 中的索引,如果之前使用过则不会移动