Java 有没有一种方法可以用“获取文件的路径?”/&引用;而不是",\&引用;?
我正在用Java制作一个HTTP服务器,这样(在开始时)它可以找到一个目录(及其子目录)中的所有文件,并将它们添加到服务器中。但是,当获取文件路径并尝试将其提供给HttpServer.createContext()时,它会抛出一个Java 有没有一种方法可以用“获取文件的路径?”/&引用;而不是",\&引用;?,java,Java,我正在用Java制作一个HTTP服务器,这样(在开始时)它可以找到一个目录(及其子目录)中的所有文件,并将它们添加到服务器中。但是,当获取文件路径并尝试将其提供给HttpServer.createContext()时,它会抛出一个java.lang.IllegalArgumentException:path或protocol的非法值。(使用字符串参数,说“\folder/index.html”)。为了得到这个值,我使用 file.getParent().substring(24) + "
java.lang.IllegalArgumentException:path或protocol的非法值。(使用字符串参数,说“\folder/index.html”)。为了得到这个值,我使用
file.getParent().substring(24) + "/" + file.getName()
我使用子字符串是因为我必须排除web服务器所在的文件夹。非法字符是反斜杠。我尝试扩展文件以更改分隔符
和分隔符
,但这只创建了两个新变量。使用String.replace()时似乎没有任何效果。是否有一种不同于File.getParent
或File.getPath
的方法可以使用,或者是否有一种方法可以使用我没有看到的String.replace
编辑:
String.replace()似乎是最好的答案。。。但我不完全确定如何使用它
编辑2:由于某种原因,反斜杠没有出现,所以我更改了它。您必须使用java
注意,在此上下文中,“file.separator”
是一个键
使用从当前执行java VM的系统获取该属性
不要使用斜杠(/),应选择平台无关的文件分隔符,例如:
String separator = System.getProperty("file.separator");
System.out.println(separator);
// unix / , windows \
查看路径。获取(…)
尝试路径。获取(“.”
//当前工作目录
或者告诉它应该从哪条路径开始:
使用System.getProperty(“user.dir”)
作为当前登录用户的主目录。
字符串pathStr=“/”
Path homeDir=Path.get(System.getProperty(“user.dir”))
从用户目录进入数据目录:homeDir.get(“数据”)
现在使用dataFile上的操作来检查文件系统的该位置上有哪些文件和目录。作为Java专业人士,您应该检查路径
类在路径拆分和处理方面提供了哪些功能concerned@Marged好的,我会的。另外,“JAVAPRO”是一个相对术语。但是您知道,String.replace()
不会更改原始字符串,而是会返回经过处理的字符串?@vanje我尝试了(file.getParent().substring(24)+“/”+file.getName())。replace(“\\\\”,“/”
作为创建http服务器上下文的方法的参数。我做得对吗?我确实意识到“\\\”可能不正确……但我必须使用/
,因为这是HttpServer唯一能接受的。用system.setProperty()设置系统属性是个糟糕的主意吗?或者这会破坏我的计算机?这是因为文件分隔符是操作系统原语,而不是所有操作系统的默认值。(linux、windows、macos等)但我需要不同的字符串,我应该怎么做?您需要使用system.getProperty。因此,它适用于任何操作系统。如果需要不同的行为,可以使用对象来定义此行为。假设您有一个别名路径和一个实路径。其中实际路径将从文件系统加载正确的路径
。@anygenergicJAVAPRO文件与URL非常不同。他们有不同的规则。
Path dataPath = Paths.get(System.getProperty("user.dir"));
File dataFile = dataPath.toFile();