【发布时间】:2014-12-18 21:58:24
【问题描述】:
我希望有人能解释为什么这不起作用以及我的解决方案可能是什么。
我尝试了以下方法来了解会发生什么:
String s = "\\users\\udc8\\a4471\\My Documents\\MATLAB\\blockdiagram.xml";
String st = "\\";
String st2 = st + s;
System.out.println(st2);
给我以下输出:
\\users\udc8\a4471\My Documents\MATLAB\blockdiagram.xml
哪个是文件的正确路径。 然后我尝试使用 SAX 解析这个文件,我得到一个 IOEXception 说该文件不存在。我尝试过使用 File 和 getPath()、getCanonicalPath() 和 getAbsolutePath()。 运行解析器时,我得到消息:
Due to an IOException, the parser could not check \\users\udc8\a4471\My Documents\MATLAB\\blockdiagram.xml
这是开始解析的代码:
try {
XMLReader parser = XMLReaderFactory.createXMLReader();
parser.parse(st2);
System.out.println(s + " is well-formed.");
}
catch (SAXException e) {
System.out.println(s + " is not well-formed.");
}
catch (IOException e) {
System.out.println(
"Due to an IOException, the parser could not check "
+ s
);
}
运行没有自己的消息的类似程序,将返回以下错误消息:
java.io.FileNotFoundException: \\users\udc8\a4471\workspace\SAX Intro\users\udc8\a4471\My Documents\MATLAB\blockdiagram.xml (The system cannot find the file specified)
该文件没有特殊限制(据我所知),在查看文件属性时没有勾选,我可以手动重写内容。 有什么想法吗?
【问题讨论】:
-
当您遇到异常时,打印异常,而不仅仅是您自己设计的一些模糊信息。实际的异常消息会告诉您确切的问题所在。
-
如果你问我,你真的希望文件位于“\\users\udc8\a4471\workspace\SAX Intro\users\udc8\a4471\My Documents\MATLAB\blockdiagram.xml”下吗“users\udc8\a4471”部分似乎是重复的
-
@EJP 我得到的消息贴在下面,解析代码从一开始就不是我自己的,所以我从 SAX 教程中复制了代码。我只更改了重要的部分以输入我的文件。
-
@user1902288 不,我不希望这是位置,但这就是 parser.parse(st2);即使 st2 不包括第一部分,似乎也可以从中读取。似乎 parser.parse 从当前目录开始。如何解决这个问题?
-
多年来我没有使用过Stax,我将尝试在这里做一个简单的例子来理解这个问题。请问您是否将您的应用程序打包到 .jar 并包含 xml 文件,或者只是从您的 IDE 运行它以让您的类访问该文件?如果您将 blockdiagram.xml 放入与包含解析器代码的 .class 相同的文件夹中,并将“blockdiagram.xml”作为参数传递给解析器,它是否有效?
标签: java string file-io ioexception