Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FileOutputStream访问被拒绝:JAVA_Java_Fileoutputstream - Fatal编程技术网

FileOutputStream访问被拒绝:JAVA

FileOutputStream访问被拒绝:JAVA,java,fileoutputstream,Java,Fileoutputstream,我将以下代码与iText库正确集成 import java.io.*; import com.itextpdf.text.*; import com.itextpdf.text.pdf.PdfWriter; @org.eclipse.jdt.annotation.NonNullByDefault(true) public class HelloWorld { public static final String RESULT = "C:\\Users\\administra

我将以下代码与iText库正确集成

import java.io.*;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfWriter;

@org.eclipse.jdt.annotation.NonNullByDefault(true)
public class HelloWorld {      
    public static final String RESULT = "C:\\Users\\administrator\\Pictures\\tuto";

    @SuppressWarnings("resource")
    public static void main(String[] args) throws DocumentException, IOException {
        Document document = new Document();
        PdfWriter.getInstance(document, new FileOutputStream(RESULT));
        document.open();
        document.add(new Paragraph("Hello World!"));
        document.close(); 
    }
}
此代码返回一条错误消息,如下所示

Exception in thread "main" java.io.FileNotFoundException: C:\Users\valentin.schaefer\Pictures\tuto (Access is denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at HelloWorld.main(HelloWorld.java:25)
线程“main”java.io.FileNotFoundException中的异常:C:\Users\valentin.schaefer\Pictures\tuto(访问被拒绝) 在java.io.FileOutputStream.open(本机方法) 位于java.io.FileOutputStream。(未知源) 位于java.io.FileOutputStream。(未知源) 位于HelloWorld.main(HelloWorld.java:25)
然而,我是计算机管理员,我通常拥有该帐户的所有权限。我不明白为什么他重新告诉我
访问被拒绝

您需要有访问该文件位置的权限。有两种可能的解决办法

1. use deferent file location to store your file (eg: D:\\somewhere)  
2. make sure that you have permission to access current location by granting 
   read write permissions. 

您正在尝试访问该目录。FileOutputStream的参数应该是指向文件的
文件
/
路径
对象

 FileOutputStream file  = new FileOutputStream("path/file.txt");
                   File -------------------------------^

有关更多详细信息,请查看

实际上您正在尝试使用FileOutputStream()访问目录 表示您正试图访问目录“C:\Users\administrator\Pictures\tuto” 使用-

这是错误的,因为可以提供给FileOutputstream()的有效输入是文件名(如“xyz.txt”)或文件路径(如“C:\sample\xyz.txt”)

在FileOutputstream()中使用文件名或文件路径,您的问题就会解决


谢谢。

我遇到了一个类似的问题,我解压缩了一个jar文件,但由于此错误消息而失败。这个jar是一个带有依赖项的jar,我最近添加了一个新的依赖项。检查了jar内容后,我发现在同一根目录中有一个
LICENSE
文件和一个文件夹
LICENSE
。虽然这在Linux上完全有效,但Windows文件系统会呕吐。在我的案例中,解决方法是在try/catch中捕获这个错误。在捕获中,检查您是否在windows上,如果是,则记录警告,因为没有太多可以做的事情,否则抛出。

不是此问题的答案。

我得到了相同的异常,因为Windows不区分大小写。
尝试创建一个名为“test”的文件和另一个名为“test”的文件将生成相同的异常

您可以尝试以下方法:

if(!file.canRead()){
    file.setReadable(true);
 }

 FileOutputStream file  = new FileOutputStream("path/file.txt");

通过此操作,您可以动态更改对文件或文件夹的访问权限。 注意:这只适用于Linux机器

private void filePermissions(File filePath) throws IOException {

        Path path = Paths.get(filePath.toString());

        Set<PosixFilePermission> perms = java.nio.file.Files.readAttributes(path, PosixFileAttributes.class)
                .permissions();

        perms.add(PosixFilePermission.OWNER_WRITE);
        perms.add(PosixFilePermission.OWNER_READ);
        perms.add(PosixFilePermission.OWNER_EXECUTE);
        perms.add(PosixFilePermission.GROUP_WRITE);
        perms.add(PosixFilePermission.GROUP_READ);
        perms.add(PosixFilePermission.GROUP_EXECUTE);
        perms.add(PosixFilePermission.OTHERS_WRITE);
        perms.add(PosixFilePermission.OTHERS_READ);
        perms.add(PosixFilePermission.OTHERS_EXECUTE);
        java.nio.file.Files.setPosixFilePermissions(path, perms);

    }
private void filePermissions(文件路径)引发IOException{
Path Path=Path.get(filePath.toString());
设置perms=java.nio.file.Files.readAttributes(路径,PosixFileAttributes.class)
.permissions();
perms.add(PosixFilePermission.OWNER\u WRITE);
perms.add(PosixFilePermission.OWNER\u READ);
perms.add(PosixFilePermission.OWNER\u EXECUTE);
perms.add(PosixFilePermission.GROUP_WRITE);
perms.add(PosixFilePermission.GROUP_READ);
perms.add(PosixFilePermission.GROUP\u EXECUTE);
perms.add(PosixFilePermission.OTHERS_WRITE);
perms.add(PosixFilePermission.OTHERS_READ);
perms.add(PosixFilePermission.OTHERS_EXECUTE);
java.nio.file.Files.setPosixFilePermissions(路径,perms);
}

目录是否存在?是否尝试从用户空间以外的地方访问文件?或者不同的驱动器?是的,目录存在并且文件夹具有傻瓜权限。看起来您可能指向一个目录。尝试确保
结果
指向一个不存在的文件或一个可以编辑和保存的文件。请避免只发布代码答案,并提供一些解释以澄清您的答案。
private void filePermissions(File filePath) throws IOException {

        Path path = Paths.get(filePath.toString());

        Set<PosixFilePermission> perms = java.nio.file.Files.readAttributes(path, PosixFileAttributes.class)
                .permissions();

        perms.add(PosixFilePermission.OWNER_WRITE);
        perms.add(PosixFilePermission.OWNER_READ);
        perms.add(PosixFilePermission.OWNER_EXECUTE);
        perms.add(PosixFilePermission.GROUP_WRITE);
        perms.add(PosixFilePermission.GROUP_READ);
        perms.add(PosixFilePermission.GROUP_EXECUTE);
        perms.add(PosixFilePermission.OTHERS_WRITE);
        perms.add(PosixFilePermission.OTHERS_READ);
        perms.add(PosixFilePermission.OTHERS_EXECUTE);
        java.nio.file.Files.setPosixFilePermissions(path, perms);

    }