0

我在 Eclipse 插件中使用org.eclipse.swt.widgets.FileDialog并保存 XML 文件中的路径来获取文件路径。

在 web.xml 中,路径存储如下(我无法将反斜杠更改为正斜杠或转义反斜杠,因为该值来自 SWT FileDialog)

<init-param>
  <param-name>filePath</param-name>
  <param-value>c:\new\demo\next\version.txt</param-value>
</init-param>

在我的过滤器中,我在 init() 方法中有以下代码,但由于特殊字符而无法获取文件引用

String filePath = filterConfig.getInitParameter("filePath");
// Tried filePath.replace('\\','/') --> Didnot work since \n is a single character
File f = new File(path)
4

2 回答 2

2

我无法获得实际路径,因为 \n 被视为新行。

这表明读取文件的任何内容都假设转义,而事实并非如此。

不幸的是,您还没有告诉我们使用什么代码来写入数据用于读取数据的代码。它是否在您的控制之下?

基本上,您需要以与 unescape 相同的方式进行转义 - 因此您可以在写入数据时转义c:\new\demo\next\version.txtc:\\new\\demo\\next\\version.txt,或者您可以删除在读取数据时试图取消转义的代码。

请注意,如果您确实尝试过:

string.replace('\\', '/');

那么这肯定无济于事-因为您忽略了返回值。如果你试过

string = string.replace('\\', '/');

那么这应该已经执行了相关的替换,但是你没有说你在哪里尝试这样做,或者它以什么方式不起作用。

实际上,我在这里将正斜杠与反斜杠视为一条红鲱鱼:从根本上说,您需要以与逃脱相同的方式逃脱。用正斜杠替换反斜杠可能有助于文件名,但如果您不能只执行替换,您只会在其他地方遇到问题。

于 2012-05-31T18:46:29.883 回答
0

我正在使用 org.eclipse.swt.widgets.FileDialog 获取 eclipse 插件中的文件路径并将路径保存在 XML 文件中。

在 web.xml 中,路径存储如下(我无法将反斜杠更改为正斜杠或转义反斜杠,因为该值来自 SWT FileDialog)

SWT 文件对话框不写入 web.xml 文件。您正在这样做,因此您可以修复反斜杠。将它们更改为正斜杠。

我在 init() 方法中有以下代码,但由于特殊字符不起作用,因此无法获取文件引用,因为 \n 被视为单个字符 [来自您的评论之一]

这意味着web.xml 文件中的数据有误。你在代码中做的任何事情都无法解决这个问题。这不是一个编码问题。您不需要在 Java 中处理反斜杠。编译器已经这样做了,在这种情况下,Web-app 容器中的 XML 解析器也是如此。您需要预先获取正确的文件格式。

于 2012-06-01T04:47:57.910 回答