FileOutputStream访问被拒绝:JAVA
我将以下代码与iText库正确集成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
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);
}