【问题标题】:Folder and file are not getting created by Java code under Linux, but it works for Windows文件夹和文件不是由 Linux 下的 Java 代码创建的,但它适用于 Windows
【发布时间】:2014-03-19 19:01:23
【问题描述】:

我有几个关于 Java 的 io.file 类的问题

  1. Linux:文件分隔符运算符“//”有效还是我们需要使用“\”?
  2. 在 red hat 中没有驱动器分区名称,那么如何给 Linux 等效的 Windows 路径 'c://TempFolder//Images//'?

【问题讨论】:

  • Linux 文件系统只有一个根 - / 甚至 NTFS 卷都安装在该根下。 Linux 上的文件分隔符是“/”。一些 Java 软件可以在两个 OS 系统上使用“/”。但是,在 Windows 中,正确的表示是 '\\'
  • 文件分隔符是单个正斜杠/

标签: java linux file


【解决方案1】:

您可以使用静态字段 File.separator,或者更好的是使用 nio Paths 类,如下所示:

File f = Paths.get( "dir1", "dir2", "dir3" ).toFile();

要获得引用绝对路径的内容,请使用 File.separator 开始 String 参数,您也可以通过以下方法使用 nio 获得它:

http://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystem.html#getSeparator%28%29

【讨论】:

    【解决方案2】:

    Windows 下:

    File file = new File("C:\\TempFolder\\Images");
    File file = new File("C:/TempFolder/Images"); // Because Windows soemtimes is nice.
    

    Linux 下:

    File file = new File("/TempFolder/Images");
    

    之所以有两个反斜杠 (\\),是因为在字符串中必须转义一个反斜杠:\t 是一个制表符等等。

    如果这是您的问题,Linux 中没有驱动器号。对于临时文件,您可以使用 File.createTemporaryFile 或 createTemporaryDirectory。

    其他计算机上的目录也可以不使用驱动器号,但使用 UNC 路径:

    Windows

    \\Server\Directory\Directory
    "\\\\Server\\Directory\\Directory"
    

    Linux

    //Server/Directory/Directory
    

    【讨论】:

      猜你喜欢
      • 2015-06-22
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 2022-10-01
      • 2022-11-21
      • 2021-05-03
      相关资源
      最近更新 更多