我在Windows中使用Java创建文件。这有效:
String newFile = "c:/"+Utilities.timeFormat();
...
some code that creates a folder
这不起作用:
String newFile = "c:/newDirectory/"+Utilities.timeFormat();
...
some code that creates a folder
答案 0 :(得分:2)
您必须使用File.mkdir()
或File.mkdirs()
方法create a folder。
编辑:
String path="c:/newDirectory";
File file=new File(path);
if(!file.exists())
file.mkdirs(); // or file.mkdir()
file=new File(path + "/" + Utilities.timeFormat());
if(file.createNewFile())
{
}
答案 1 :(得分:1)
在不知道创建目录的实际代码的情况下:
使用mkdirs()而不是mkdir()
答案 2 :(得分:0)
您是否可以检查您是否有权在c:/
?
你能告诉我们堆栈跟踪吗?
答案 3 :(得分:0)
如果" newDirectory"还不存在,您应该使用mkdirs()
类中的方法File
来创建它们之间的所有目录。
答案 4 :(得分:0)
目录不存在的事实可能是他第一次没有工作的原因。正如许多人所指出的那样,使用mkdirs()将确保如果要写入的文件位于子文件夹中,它将创建它们。现在这就是它的样子:
File file = new File( new File("c:/newDirectory"), Utilities.timeFormat() );
if( !file.getParentFile().exists() ) {
file.getParentFile().mkdirs();
}
OutputStream stream = new BufferedOutputStream( new FileOutputStream( file ) );
try {
// put your code here to write the file
} finally {
stream.close();
}
注意我没有使用+来创建路径。相反,我创建了一个File对象,并将其传递给父文件和文件名。另请注意,我没有在父文件名和文件名之间放置路径分隔符。使用File构造函数可以处理与系统无关的创建路径的方法。