2010-10-05 34 views
-1

我正在使用我的Java应用程序中的文件(读取,写入和复制),java.io.Filecommons-io非常适合这类任务。使用带锚的文件,哪些选项适用于Java?

现在,我可以链接到HTML中这样说:

Z:\an absolute\path\to\a\file.html 

但是,我需要为锚的支持太:

Z:\an absolute\path\to\a\file.html#anchor 

保持,通过使用Java得到了系统独立.io.File。所以,我需要提取路径和锚点,我想知道它是否会像寻找一个尖锐的事件一样容易。

回答

1

java.io.File包含一个接受URI的构造函数,它可以表示各种资源,包括URL和本地文件(请参阅rfc)。 URI也符合您支持锚点的要求,并提取路径信息(通过instance.getPath())。

+0

当试图从java.io.File中转换为java.net.URI中的使用java.io .File.toURI()方法将锐利(#)字符转义。最终用户不关心URI,他们关心使用他们始终知道的Windows路径。在我的情况下,这不是解决方案,除非有更直接的方式来解决这个问题。 – Alexander 2010-10-06 08:25:12

+1

我可能一直不清楚。我建议您重构您的代码以使用URI的所有资源,并根据需要进行转换,具体取决于您需要执行的操作。这样用户可以处理本地路径或URL,您只需创建适合执行io的对象即可。如果你的代码不能简单地做到这一点,那么我看到你的困境。 – 2010-10-06 15:42:19

0
File f = new File("Z:\\path\\to\\a\\file.html#anchor"); 
String anchor = f.toURL().getRef(); //note: toURL is deprecated 

如果你看一下Java源代码,你会发现它很简单,只要:

String file = "Z:\\path\\to\\a\\file.html#anchor"; 
int ind = file.indexOf('#'); 
String anchor = ind < 0 ? null: file.substring(ind + 1); 
+0

这意味着重构整个代码并照顾不能使用普通的java.io.File方法。 – Alexander 2010-10-06 08:16:32

相关问题