0

我在 C:/proj/test_xml/Test.java 中有一个类测试。给定 parser.parse("test.xml"); 我需要一种方法来解析 test.xml,无论它是在当前目录、proj 还是在 C:/ 中,此外,该解决方案不应使用 java.io

谢谢

4

2 回答 2

0

我不确定我是否理解你的问题,但我假设你想在不同的位置搜索一个文件,有限数量的任意目录。最后一个要求听起来特别糟糕……为什么不使用 java.io?(我)想到的最简单的解决方案实际上是:

String[] filenames = { "c://a.pdf", "c://airu//a.pdf" };
File f = null;
boolean found = false;
for (String filename : filenames)
{
    f = new File(filename);
    found = f.exists(); 
    if (found) break;
}
if (!found) 
{
    throw new RuntimeException("file nowhere to be found");
}
System.out.println("file " + f.getName() + " found");

请尝试为您的问题(编辑)添加一些细节。

于 2008-12-29T10:26:29.707 回答
0

尝试循环,直到解析不再抛出 IOException:

String filename="test.xml";
int tries=3;
while( tries-->0 ) {
    try {
        parser.parse(filename);
        break;
    } catch( FileNotFoundException e ) {
        // FileNotFound expected
        filename="../"+filename;
    }
}

如果尝试 == 0,则根本找不到文件。对于 DOM 解析器,需要保留 parser.parse() 返回的 Document 对象。

于 2008-12-29T10:51:31.980 回答