gpt4 book ai didi

java - 为什么在通过 ANT 运行时我的文件无法正确读取

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:10:54 25 4
gpt4 key购买 nike

我有一套在 Eclipse 中运行的单元测试,它们都运行良好。它们依赖于从大于 20MB 的非常大的文件加载的数据。但是,当我从 ANT 运行单元测试时,测试失败,因为某些数据未加载。发生的事情是我的文件读取机制没有读取整个文件,它只是停止了,在读取了 900,000 行中的大约 10,000 行之后没有给出任何错误

这是我的文件读取代码

    private static void initializeListWithFileContents(
TreeMap<String, List<String>> treeMap, String fileName)
{
File file = new File(fileName);
Scanner scanner = null;
int count = 0;
try
{

scanner = new Scanner(file);
while (scanner.hasNextLine())
{
String line = scanner.nextLine().toLowerCase().trim();
String[] tokens = line.split(" ");

if (tokens.length == 3)
{
String key = tokens[0] + tokens[1];
if (treeMap.containsKey(key))
{
List<String> list = treeMap.get(key);
list.add(tokens[2]);
}
else
{
List<String> list = new ArrayList<String>();
list.add(tokens[2]);
treeMap.put(key, list);
}
count++;
}
}
scanner.close();
}

catch (IOException ioe)
{
ioe.printStackTrace();
}
System.out.println(count + " rows added");
}

这是网络应用程序的一部分。 Web 应用程序也工作正常,整个文件都加载到内存中。如果我的单元测试所依赖的数据包含在前 10,000 行中,那么单元测试可以通过 ANT。我唯一能想到的是它一定是内存问题,但为什么我没有抛出异常。我从 Eclipse 中运行我的 ANT 目标。它配置了与我的 Eclipse JUnit 运行程序相同的 JVM 参数,即 -Xms512m -Xmx1234m。我知道它正确地选择了这些,因为如果 ANT 使用默认的 JVM 参数启动,那么它将因堆错误而失败。还有什么我可以检查的其他想法吗?

最佳答案

Scanner 类型吞噬了 I/O 错误。您必须使用 ioException() 显式检查错误方法。

如果问题是编码错误,您需要 pass the encoding of the file explicitly当您实例化扫描仪时。

如果文件是损坏的文本文件,您可能需要提供 your own reader做更多的容错解码。应尽可能避免这种情况,因为它不太正确。

关于java - 为什么在通过 ANT 运行时我的文件无法正确读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13818098/

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