当前位置: 首页 > 知识库问答 >
问题:

BufferedReader将gibberish写入txt文件

曹理
2023-03-14

本质上,我想在使用BufferedReader向idex指定的元素减去1之后覆盖txt文件“quantity.txt”。但是,结果会变成一个空白的txt文件或胡言乱语(带有br.flush();)。我试着检查了ArrayList,结果是正常工作的。它只是不能打印到txt文件。有没有可能的方法/替代方法可以做到这一点?还是我在代码中的某个地方犯了一个错误,导致它输出了一个空白或杂乱无章的txt文件?下面是我的代码供参考:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Scanner;
public class MainClass {
 public static void main (String args[]) throws Exception {

        
      FileReader file_reader = new FileReader("Quantity.txt");
      BufferedReader br = new BufferedReader(file_reader);
      FileWriter file_writer = new FileWriter("Quantity.txt");
      BufferedWriter bw = new BufferedWriter(file_writer);
  
      ArrayList<String> lines = new ArrayList<String>();
      Scanner in = new Scanner(new FileReader("Quantity.txt"));
      while (in.hasNextLine())
      {
          lines.add(in.nextLine()); // add item in line to lines Arraylist 
      }


      ArrayList<Integer> Conv = new ArrayList<Integer>();
      for(String stringValue : lines) {
        try {
            //Convert String to Integer, and store it into integer array list.
            Conv.add(Integer.parseInt(stringValue));
        } catch(NumberFormatException nfe) 
        {
           
            System.out.printf("NumberFormat", "Parsing failed! " + stringValue + " can not be an integer");
        } 
      } 
     int input_item_index = 0; 
     int ToSub = Conv.get(input_item_index);
     int ToInsert = ToSub-1;// to subtract one to ToInsert
     Conv.add(input_item_index,ToInsert);// add to Conv
     System.out.println(Conv);  // for checking output
   
    for (int i = 0; i < Conv.size(); i++)
    {
                    bw.write(Conv.get(i));
                    i++;
                    bw.flush();
    }
                    

  }

 }  

共有1个答案

谭宏盛
2023-03-14

您需要首先进行读取,关闭所有读取器,然后写入数据,这样文件就不会同时被一个读取器和一个写入器打开。

ArrayList<String> lines = new ArrayList<String>();
try (FileReader file_reader = new FileReader("Quantity.txt");...){
    ...read
}

try (FileWriter file_writer = new FileWriter("Quantity.txt";...){
    ...write
}

也检查你的书写循环,你似乎没有写新的行,你增加我两倍...

 类似资料:
  • 是否可以使用BufferedReader从文本文件中读取,然后当缓冲读取器读取时,同时它还使用PrintWriter将读取的行存储到另一个txt文件中?

  • 问题内容: 如何将一小段文字写入文件?我已经使用Google搜索了3-4多个小时,但无法找到具体方法。 有很多论据,我不知道该如何使用。 当您只想在文件中写一个名字和几个数字时,最容易使用的功能是什么? 编辑:添加了一段我的代码。 问题答案:

  • 问题内容: 我已经在该站点附近搜索了答案,但找不到任何答案。 我有一个表格,我想将输入内容写入txt文件。为了简单起见,我只写了一个简单的表单和脚本,但是它一直让我空白。这就是我得到的 这是我的PHP文件 问题答案: 您的表格应如下所示: 和PHP 我写信是因为这样我才知道确切的位置。使用写入当前工作目录中的文件,在您的示例中我一无所知。 为您打开,写入和关闭文件。不要惹它。 进一步阅读: fil

  • 我正在使用一个nodejs应用程序。我已经开发了一个工作良好的虚拟API。这是我在命中get请求endpoint后收到的响应。 我的主要目标是能够将此响应保存到本地文件中。然而,我的代码返回的东西与我预期的相去甚远。它返回了大量的“代码”,但摘录如下: 另一方面,我的代码看起来是这样的: 你能发现我的错误吗?或者有别的办法吗?请分享。谢谢

  • 问题内容: 我想创建一个简单的日志系统,该日志系统使用Node.js将前一行之前的一行打印到txt文件中,但是我不知道Node.js中的文件系统如何工作。有人可以解释吗? 问题答案: 将数据插入文本文件的中间不是一件容易的事。如果可能,应将其附加到文件末尾。 将数据追加到一些文本文件的最简单方法是使用来自模块的内置函数: 但是,如果您想多次将数据写入日志文件,那么最好改用function: 每次您

  • 我试图从查询字符串中获取一个变量,并将其写入文本文件。我试过这样做: 我得到以下错误: 警告:fopen(etlLOG.txt)[function.fopen]:无法打开流:在E:\Users\george\listener中的权限被拒绝。php第8行 警告:f写():在第9行的E:\用户\乔治\listener.php中,提供的参数不是有效的流资源 警告:fclose():提供的参数不是E:\U