在读取文件时获取Java中拒绝的权限(Linux)
大家好,我最近转移到了Ubuntu来开展一个项目。 我要简单地从文件中读取,使用:在读取文件时获取Java中拒绝的权限(Linux)
File root = new File(fileroot); File sourceFile = new File(root,filename);
但是当我运行的应用程序,我得到: error: error reading FilePath; FilePath (Permession denied).
(filepath是该文件所在的路径,我已隐藏它为了隐私目的)
我想是由于操作系统,因为在Windows上运行相同的代码不会给我任何错误。有没有办法解决这个问题?我的意思是直接从Java获得这些权限的方法,或者可能使用命令从终端更改它们?
在此先感谢您的答案!
就像消息所说,您可能没有权限读取该文件。要解决问题,您可以添加:
System.out.println(sourceFile.getAbsolutePath());
找到你想阅读,然后检查其文件系统权限的文件的确切位置:
ls -la <path to your file>
确认您拥有r
权限,否则这是你得到的错误。
我得到:'-rw ------- 1 root root 2044 ott 3 18:00 PATHTOTHEFILE' 我想我有读写权限吗? – giku93113
这意味着只有用户'root'才能读取它。要修复它,你必须通过'chown
执行此操作的一种方法是导航到该文件并更改权限以允许每个用户读取该文件。 最简单的是通过终端:
chmod +r /path/to/file
要查看所有不同的用途按照链接,了解CHMOD。 https://codex.wordpress.org/Changing_File_Permissions
您可以作为有权打开该文件的用户运行该程序。示例'sudo java -jar myProg.jar'。 – Titus
另一件要研究的是如何创建这些文件**。您会发现,在第一次创建没有读取权限的文件时,没有多少意义,迫使您稍后添加它们。所以,你可以看看你的系统上的** umask **设置;看起来相当奇怪的是,你处理的文件不是**可读的**。所以,是的,答案可以帮助你解决**问题;但你应该首先询问(并修正)“为什么到达那里”。 – GhostCat