正如标题中所述,我试图从位于Tomcat-Context文件中的String的路径中读取文件。
路径以" /// C:"开头。在Unix系统上,它将以" / C:"开头。 截至目前,我正在努力做到如下:
MyPath = Paths.get("///C:" + filename);
byte[] encoded = Files.readAllBytes(MyPath);
String JsonString = new String(encoded);
这会导致此错误:"索引4:/// C:/file.json"
中路径中的非法字符[:]我知道Windows并不喜欢Colons的路径,但是当我切断领先的Substirng" ///"从路径,Windows可以处理它。 (但这并不能帮助我,因为这很脆弱,而且编码方式很糟糕。而且它不能在一半的服务器上工作)
我很害羞这只是我不理解路径命名约定。 那么这种路径应以何种方式处理?
问候: 荣格
答案 0 :(得分:1)
我的错误是,我没有将我收到的网址视为网址。 以下代码片段起到了作用:
MyPath = Paths.get( new URL("///C:" + filename).toURI() );
它适用于两个系统。我认为Paths.get()理解" ///"仅限于网址。
答案 1 :(得分:0)
我的建议是先检查你最初使用System.getProperty()的操作系统(作为常量会更高效的IMO,但取决于你的程序):
private static final boolean Windows = System.getProperty( "os.name" ).contains( "indow" );
如果你在Windows上并且对另一个(Linux / OS X)
是假的,那将是真的然后,您必须在传递文件路径时检查您是否在Windows上。如果它是真的,则需要子串()例如:传递" C:"而不是" /// C:") ,否则就像其他操作系统一样:
MyPath = Paths.get((Window ? drive.substring(3) : drive) + filename);