java.io.File的路径问题

时间:2012-05-31 18:41:14

标签: java xml swt

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

在web.xml中,路径存储如下(我不能将backsladh更改为forwardslash或转义反斜杠,因为该值来自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)

2 个答案:

答案 0 :(得分:2)

  

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

这表明无论阅读文件是什么,都假设是逃避,而事实并非如此。

不幸的是,您还没有告诉我们用什么代码来数据用于读取数据的代码。在任何一条道路上都在你的控制之下吗?

基本上你需要以与unescape相同的方式进行转义 - 所以你可以在编写数据时将c:\new\demo\next\version.txt转义为c:\\new\\demo\\next\\version.txt,或者你可以删除尝试的代码你正在阅读数据时发现它。

请注意,如果字面上尝试:

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

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

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

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

我实际上会将前锋与反斜杠视为红鲱鱼:从根本上说,你需要以与你不相同的方式逃避。用正斜杠替换反斜杠可能对文件名有帮助,​​但是在无法执行替换的情况下,您只会在其他地方遇到问题。

答案 1 :(得分:0)

  

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

     

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

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

  

我在init()方法中有以下代码但是无法获取File   由于特殊字符引用   这是行不通的,因为\ n被认为是[来自你的一条评论]的单个字符

这意味着web.xml文件中的数据错误您在代码中无法做到的任何事情都可以解决这个问题。这不是编码问题。您不需要在Java中处理反斜杠。编译器已经这样做了,因此在这种情况下,在Web应用程序容器中执行了XML解析器。您需要预先获得正确的文件格式。