2013-07-21 416 views
1
File file1 = new File(file.getAbsoluteFile() + "/example/directory/example.png"); 
file1.mkdirs(); 
file1.setWritable(true); 
file1.createNewFile(); 
try { 
    FileInputStream is = new FileInputStream(exampleInputDirectory); 
    FileOutputStream os = new FileOutputStream(file1); 
    FileChannel srcChannel = is.getChannel(); 
    FileChannel dstChannel = os.getChannel(); 
    dstChannel.transferFrom(srcChannel, 0, srcChannel.size()); 
    is.close(); 
    os.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

这是我的设置,用于将映像文件复制到新的目录树。然而,当这个代码被执行,我得到如下:复制文件导致java.io.FileNotFoundException(访问被拒绝)输出

java.io.FileNotFoundException: *points to output directory* (Access is denied) 

难道我走了有关创建file1不正确?

+0

您在第一行'file.getAbsoluteFile()'中写道。你有另外一个名为file的变量,或者你的意思是'file1'? – Kon

+0

是正在使用的文件?你有权访问该路径吗? – DarthVader

+0

已经更新了答案,看看。 – Ankit

回答

3

问题是因为使用

file1.mkdirs(); 

file1.createNewFile(); 

在一起。

由于file1对象在通过调用“file1.mkdirs()”将其创建为目录后已被赋予'目录'属性,但是您再次使用同一对象创建'文件',这意味着changin file1对象从目录到文件的属性,这是不允许的。这就是为什么它给你FileNotFound

+0

我摆脱了mkdirs电话。现在它给了'java.io.IOException:系统无法在file1上找到指定的路径。我应该制作目录*然后*制作文件? –

+0

@JeffDemanche是的,因为createNewFile()只会创建一个新文件。但是如果路径不存在,它不会创建目录。这就是为什么现在给这个错误。因此,确保您试图放入文件的文件夹存在。 – Ankit

+0

非常好,谢谢你的帮助。 –

0

您创建的file1似乎达到标准,也许您的输入目录不存在?确保所有大写字母都是正确的,并且目录引用中没有拼写错误。还要确保用户是否有权将文件复制到目录中,如果不是,则可以在Linux中以root用户身份运行它,并在Windows中以管理身份运行。这里

相关问题