【问题标题】:Is it Possible to recreate Java BufferedReader object, after close()是否可以在 close() 之后重新创建 Java BufferedReader 对象
【发布时间】:2017-05-17 13:00:46
【问题描述】:

我创建了一个 BufferedReader 对象来读取文件。成功完成文件操作后,我将关闭对象,如下所示:

BufferedReader buffer = new BufferedReader(new FileReader("FileName"));
     //Some file operation
buffer.close();

现在我需要在同一个程序中创建另一个 BufferedReader 对象,所以我想创建一个具有相同名称的另一个 BufferedReader 对象(我需要创建具有相同名称的对象,因为我想要在某些条件下递归运行代码)

当我尝试时,我收到一条消息,指出对象已经存在同名,即使我关闭()对象。

有人可以指导我如何实施吗? 有没有办法删除对象引用而不只是关闭它? 问题可能很愚蠢,但到目前为止我还没有研究过 Java 部分,我可以说我是新手。

感谢是提前!

错误截图:

我正在做的是:

  BufferedReader buffer = new BufferedReader(new FileReader("$PropFilePath/WebAndService-Test.details"));
        //Code to read the file and assigning values to some variables
  buffer.close();

  BufferedReader buffer = new BufferedReader(new FileReader("$PropFilePath/ProjectDependencies-Test.List"));
        //Code to use those variables and perform operation on new read file.
  buffer.close();

并收到错误消息,如屏幕截图所示。

【问题讨论】:

  • 关闭不等于删除。您可以通过将buffer 重新分配给新的BufferedReader 来删除对象引用。
  • 我不太明白你的问题,你能把完整的例子贴出来,包括第二个BufferedReader的创建,以及你的错误是编译错误还是运行时错误?
  • 简单来说,我无法在同一个程序中再次定义同名的bufferedReader对象。 @Ishnark,您的解决方案不起作用,我收到相同的错误消息。
  • 能发下源代码吗?
  • @VinayVerma 你已经拥有buffer,所以你不应该再次声明BufferedReader buffer = new BufferedReader(...)。你应该简单地做buffer = new BufferedReader(...)

标签: java


【解决方案1】:

看起来你可能在同一个块中声明了两次BufferedReader buffer = ...。要么使用新的变量名BufferedReader anotheBuffer = ...,要么在不声明buffer = ... 的情况下重复使用。我会建议一个新的变量。您还应该考虑使用try-with-resources

【讨论】:

  • 哎呀在发布我的基本相同之前没有注意到您的答案。
【解决方案2】:

问题似乎是当您想将变量重新分配给新对象时使用了错误的语法。

你在做

    BufferedReader buffer = new BufferedReader(new FileReader("FileName"));

这是定义新变量时使用的语法,但是要将新对象分配给已经存在的变量,正确的语法是

    buffer = new BufferedReader(new FileReader("FileName"));

因为你不需要再次告诉编译器变量的类型是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多