我的java代码如下 -
string folderName = "d:\my folder path\ActualFolderName";
File folder = new File( folderName );
folder.mkdirs();
所以这里给定的目录路径中有空格。创建的文件夹是d:\my
,而不是我期待的那个。
是否有任何特殊方法可以处理文件/文件夹路径中的空间。
答案 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。