gpt4 book ai didi

Java 扫描器资源泄漏,.close() 不会因多次分配而关闭

转载 作者:行者123 更新时间:2023-12-02 06:30:18 24 4
gpt4 key购买 nike

当我有多个任务分配给我的扫描仪时,它不会关闭。使用此代码,我在 [第二个 = new Scanner(textfile);]

上遇到资源泄漏

但是,如果我有一个新的扫描仪,它就可以工作。有什么办法吗?也许可以让扫描仪再次转到第一行,这样我就不必再次将扫描仪文本文件分配给它?

public static String[][] lesFil(Scanner input) {

Scanner in;
String fileName = "d";

try {

in = new Scanner(textfile);

while (in.hasNextLine()) {

in.nextLine();
}


in = new Scanner(textfile);

while (in.hasNextLine()) {

in.nextLine();
}
in.close();

}
catch (FileNotFoundException e) {


}

return null;
}

编辑:第一个 while 循环计算文本文件中的行数(设置数组大小),然后第二个 while 将文件的数据存储在字符串数组中。

最佳答案

答案似乎很明显,您应该在将“in”重新分配给另一个扫描仪之前关闭扫描仪。

虽然您可能应该在同一次迭代中执行 2 个任务,但 IO 是实际上在资源方面相当昂贵的少数事情之一。

此外,如果您不需要直接从扫描仪获取某些内容而只想读取行,为什么不使用 FileReader 和 BufferedReader 呢?如果您可以使用 Java 7,您甚至可能想要使用 Files.readAllLines(请参阅 https://stackoverflow.com/a/12838276/144578)

关于Java 扫描器资源泄漏,.close() 不会因多次分配而关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20132993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com