首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/,//和File.Separator

/,//和File.Separator
EN

Stack Overflow用户
提问于 2021-05-18 23:44:34
回答 2查看 108关注 0票数 0

有什么区别

代码语言:javascript
复制
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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-18 23:52:57

正斜杠有时在Windows上工作。文件系统和内核在路径名称中等效地对待'/‘和'\’。在Windows NT系列(2000,XP,Vista,7,8,10)中,这种情况一直如此,但在基于DOS的Windows中却不是这样。

应用程序代码不一定如此通融。不了解此约定的人编写的代码可能不理解“/”。

此外,还存在命令行处理的问题,其中'/‘可能表示切换,而不是路径。

因此,' Windows‘本身理解'/’和'\‘在路径名上是等价的,但并不是所有运行在Windows中的代码都知道这一点。

tl;dr -有时起作用,有时不起作用。

票数 6
EN

Stack Overflow用户

发布于 2021-05-19 09:01:32

只需使用java.io.Filejava.nio.Path来处理所有文件,您甚至不应该需要在尴尬的字符串连接中引用File.separator

文件类和路径类都自动更正了对平台File.separator的正斜杠,因此正斜杠总是适用于的。

尝试使用所有这些示例都生成相同的OS路径,并避免使用"+":

代码语言:javascript
复制
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+)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67595226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档