有什么区别
fis =new FileInputStream(path+File.separator+"src"+File.separator+"main"+File.separator+"java"+File.separator+"com"+File.separator+"resources"+File.separator+"config.properties");
fis =new FileInputStream(path+"/src/main/java/com/resources/config.properties");
fis =new FileInputStream(path+"\\src\\main\\java\\com\\resources\\config.properties");我的老师让我使用File.separator,因为它是独立于平台的,但在互联网上,我读到'/‘将在Mac和Windows上工作。我在windows上尝试了’/‘,它可以工作。如果’/‘在Mac和Windows上工作,为什么我们需要使用File.separator?
发布于 2021-05-18 23:52:57
正斜杠有时在Windows上工作。文件系统和内核在路径名称中等效地对待'/‘和'\’。在Windows NT系列(2000,XP,Vista,7,8,10)中,这种情况一直如此,但在基于DOS的Windows中却不是这样。
应用程序代码不一定如此通融。不了解此约定的人编写的代码可能不理解“/”。
此外,还存在命令行处理的问题,其中'/‘可能表示切换,而不是路径。
因此,' Windows‘本身理解'/’和'\‘在路径名上是等价的,但并不是所有运行在Windows中的代码都知道这一点。
tl;dr -有时起作用,有时不起作用。
发布于 2021-05-19 09:01:32
只需使用java.io.File或java.nio.Path来处理所有文件,您甚至不应该需要在尴尬的字符串连接中引用File.separator。
文件类和路径类都自动更正了对平台File.separator的正斜杠,因此正斜杠总是适用于的。
尝试使用所有这些示例都生成相同的OS路径,并避免使用"+":
String path = "somedir";
Path a = Path.of(path, "src", "main", "java", "com", "resources", "config.properties");
Path b = Path.of(path, "src/main/java/com/resources/config.properties");
Path c = Path.of(path).resolve("src/main/java/com/resources/config.properties");
File d = new File(path, "src/main/java/com/resources/config.properties");在Windows上使用正确的分隔符=> somedir\src\main\java\com\resources\config.properties。如果没有JDK11+,请将Path.of替换为Paths.get (JDK7+)
https://stackoverflow.com/questions/67595226
复制相似问题