在读取文件时获取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获得这些权限的方法,或者可能使用命令从终端更改它们?

在此先感谢您的答案!

+0

您可以作为有权打开该文件的用户运行该程序。示例'sudo java -jar myProg.jar'。 – Titus

+0

另一件要研究的是如何创建这些文件**。您会发现,在第一次创建没有读取权限的文件时,没有多少意义,迫使您稍后添加它们。所以,你可以看看你的系统上的** umask **设置;看起来相当奇怪的是,你处理的文件不是**可读的**。所以,是的,答案可以帮助你解决**问题;但你应该首先询问(并修正)“为什么到达那里”。 – GhostCat

就像消息所说,您可能没有权限读取该文件。要解决问题,您可以添加:

System.out.println(sourceFile.getAbsolutePath()); 

找到你想阅读,然后检查其文件系统权限的文件的确切位置:

ls -la <path to your file> 

确认您拥有r权限,否则这是你得到的错误。

+0

我得到:'-rw ------- 1 root root 2044 ott 3 18:00 PATHTOTHEFILE' 我想我有读写权限吗? – giku93113

+0

这意味着只有用户'root'才能读取它。要修复它,你必须通过'chown RaggruppatoreLibriPe rAutore.java'或添加读取权限:'chmod a + r RaggruppatoreLibriPe rAutore.java'将文件的所有权更改为你。 –

执行此操作的一种方法是导航到该文件并更改权限以允许每个用户读取该文件。 最简单的是通过终端:

chmod +r /path/to/file

要查看所有不同的用途按照链接,了解CHMOD。 https://codex.wordpress.org/Changing_File_Permissions

+0

我设法做了这个答案,现在错误消失了,但我有另一个文件。如何将权限扩展到整个文件夹? – giku93113

+0

你可以在chmod中使用递归参数“-R”(就像大多数linux命令一样),你可以这样做: 'chmod + r -R/path/to/directory /'小心你选择正确的路径如果你这样做到了根目录,你允许整个系统对每个用户都有权限,这对于数据安全来说是非常残酷的 –

+0

我解决了很多! – giku93113