在Java中的给定路径创建目录 - 带空格的路径

时间:2016-01-08 12:33:17

标签: java

我的java代码如下 -

string folderName = "d:\my folder path\ActualFolderName";
File folder = new File( folderName );
folder.mkdirs();

所以这里给定的目录路径中有空格。创建的文件夹是d:\my,而不是我期待的那个。

是否有任何特殊方法可以处理文件/文件夹路径中的空间。

6 个答案:

答案 0 :(得分:3)

你应该让我们\\获取java中的路径。试试这段代码

String folderName = "D:\\my folder path\\ActualFolderName";
File folder = new File( folderName );
folder.mkdirs();

或者使用前斜杠/,这样您的应用程序将独立于操作系统。

String folderName = "D:/my folder path1/ActualFolderName";

答案 1 :(得分:1)

除非您运行的是旧版Java,否则请使用JDK7中的Path API:

Path p = Paths.get("d:", "my folder path", "ActualFolderName");
File f = p.toFile();

无论操作系统如何,它都会自动为您处理文件分隔符和空格。

答案 2 :(得分:0)

你需要转义路径分隔符:

String folderName = "D:\\my folder path\\ActualFolderName";

File file = new File(folderName);
if (!file.exists()) {
    file.mkdirs();
}

答案 3 :(得分:0)

以下替代方案应适用于Windows:

String folderName = "d:\\my\\ folder\\ path\\ActualFolderName";
String folderName = "\"d:\\my folder path\\ActualFolderName\"";

答案 4 :(得分:0)

首先,您拥有的String路径无论如何都是不正确的,因为反斜杠必须使用另一个反斜杠进行转义,否则/** * The application's route middleware. * * @var array */ protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'clientIpCheck' => 'App\Http\Middleware\ClientIpCheck', 'role' => \Zizaco\Entrust\Middleware\EntrustRole::class, 'permission' => \Zizaco\Entrust\Middleware\EntrustPermission::class, 'ability' => \Zizaco\Entrust\Middleware\EntrustAbility::class, ]; 将被解释为特殊字符。

如何使用文件URI?

\m

答案 5 :(得分:0)

你需要逃避你的路径(在路径中使用\\而不是\),你还需要使用String,大写字母S,就像你发布的代码一样不编译。试试这个,这应该有效:

String folderName = "D:\\my folder path\\ActualFolderName";
new File(folderName).mkdirs();

如果您从用户输入中获取文件夹名称(即代码中没有硬编码),则不需要逃避,但您应该确保它真正符合您的预期(打印出来)在创建要验证的文件之前的代码中。

如果您仍然遇到问题,可能需要尝试使用系统文件分隔符,您可以使用System.getProperty(file.separator)获取系统文件分隔符或访问File类中的等效字段。另请查看this question