Java 有没有一种方法可以用“获取文件的路径?”/&引用;而不是",\&引用;?

Java 有没有一种方法可以用“获取文件的路径?”/&引用;而不是",\&引用;?,java,Java,我正在用Java制作一个HTTP服务器,这样(在开始时)它可以找到一个目录(及其子目录)中的所有文件,并将它们添加到服务器中。但是,当获取文件路径并尝试将其提供给HttpServer.createContext()时,它会抛出一个java.lang.IllegalArgumentException:path或protocol的非法值。(使用字符串参数,说“\folder/index.html”)。为了得到这个值,我使用 file.getParent().substring(24) + "

我正在用Java制作一个HTTP服务器,这样(在开始时)它可以找到一个目录(及其子目录)中的所有文件,并将它们添加到服务器中。但是,当获取文件路径并尝试将其提供给HttpServer.createContext()时,它会抛出一个
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();