【问题标题】:BufferedReader/Writer not working in Java [closed]BufferedReader/Writer 在 Java 中不工作 [关闭]
【发布时间】:2016-09-30 13:29:04
【问题描述】:

我正在尝试创建两个基本函数,这将允许我从其他类调用它们,以便从“getAllData()”返回一个 HashMap,并在“writeToFile()”中写入文件,而不需要任何运气。我已经对其进行了一段时间的篡改,只是得到了许多奇怪的错误。

代码:

    static HashMap<Integer ,String> getAllData(Integer choice) throws Exception{
    InputStream localInputStream = ClassLoader.getSystemClassLoader().getResourceAsStream("Shadow.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(localInputStream));
    if (choice.equals(1)){
        while ((!data.equals(null))){
            data = br.readLine();
            dataString = dataString+data;
        }
        writeToFile(dataString);
        br.close(); 
    }return name;
}

static void writeToFile(String data) throws IOException{;
    File file = new File ("Shadow.txt");
    FileWriter fileWriter = new FileWriter(file, true);
    BufferedWriter bw = new BufferedWriter(fileWriter);
    bw.write(data);
    bw.newLine();
    bw.flush();
    bw.close();
}

使用当前的代码,什么都不会发生。该文件保持原样,尽管对我来说,代码应该从中读取所有内容,然后附加它。

我该如何解决这个问题? 谢谢

【问题讨论】:

  • 请提供有关错误的详细信息(“multitude”和“strange”除外)。
  • 添加了@Khelwood “使用当前的代码,没有任何反应。文件保持原样,尽管对我来说,代码应该从中读取所有内容,然后附加它。”
  • 你认为new File ("Shadow.txt", "true")在做什么?
  • 您正在读取和写入同一个文件并附加您之前读取的数据。不存在并发问题吗?
  • 再次阅读该教程并注意标记的位置。您不会将其放入 File 构造函数中,而是放入 FileWriter 构造函数中。 - 本教程使用布尔值 (true) 而您必须将其作为字符串 ("true") 传递,您不觉得奇怪吗?

标签: java file writer reader buffered


【解决方案1】:

这可能会对您有所帮助:

static void getAllData(final Integer choice) throws Exception {
    final BufferedReader br = new BufferedReader(new FileReader("Shadow.txt"));
    String data = "";
    final StringBuilder builder = new StringBuilder();
    if(choice.equals(1)) {
        while(data != null) {
            data = br.readLine();
            if(data != null) {
                builder.append(data + "\n");
            }
        }
        writeToFile(builder.toString());
        br.close();
    }
}

static void writeToFile(final String data) throws IOException {
    final File file = new File("Shadow.txt");
    final FileWriter fileWriter = new FileWriter(file, true);
    final BufferedWriter bw = new BufferedWriter(fileWriter);
    bw.write(data);
    bw.flush();
    bw.close();
}

【讨论】:

  • 既然他正在尝试学习 Java,你绝对应该添加一些关于你在做什么以及为什么而不仅仅是转储代码的解释。
  • 我想我明白这一点,感谢 Krishna 将代码放在一起,非常感谢 @Thomas 帮助我和体贴。 :) 意义重大!
  • @Thomas 我猜他已经为读取文件和写入文件提供了一些启动。在转储代码时,我假设他知道自己在做什么,我只是尝试修改代码并以最少的更改将其转储。
猜你喜欢
  • 2015-09-17
  • 2023-03-05
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多