我知道其他人之前也问过这个问题,但是所有建议的解决方案都不起作用。我认为这阻止了我使用 java 对文件夹的写访问(虽然不确定)。无论我做什么,我的电脑上每个驱动器上每个文件夹上的复选框总是被选中。我尝试过取消选中它,取消选中它并对“应用于此文件夹和所有子文件夹...”说是,我运行了“attrib -r +s”命令和“takeown /f [文件夹路径] /r /d y”和“icacls [文件夹路径] /grant Administrators:F /T”命令。两者都没有任何区别。
我已经重新启动,并确保我尝试使用的文件夹对我的用户、管理员和所有用户都具有完全控制权限。
任何帮助都将不胜感激。
还请注意,这些文件/文件夹实际上对于任何其他应用程序(包括 Windows 资源管理器)来说都不是只读的。只有 Java 有问题,而且可能与此无关。
答案1
您确实无法取消资源管理器中任何文件夹的只读属性:资源管理器始终以不确定状态显示只读属性(如果我没记错的话,从 Windows 7 开始)。但attrib
会告诉您是否设置了只读属性。
文件夹的只读属性不会影响用户是否可以修改其内容。但是,只读属性是 Explorer 的特殊属性。如果设置了只读属性,Explorer 将在desktop.ini
文件夹内部搜索并加载它。例如,这样Documents
,Pictures
其他文件夹就会在您的用户配置文件中本地化。
如果使用资源管理器或命令提示符可以写入该文件夹,则您有权写入该文件夹。
任何 Java 应用程序都无法写入指定文件夹吗?
只有一个 Java 应用程序无法写入吗?
因此问题出在 Java 应用程序中的某个地方。
例如,Java Web Start (JWS) 应用程序可以在沙箱中执行,从而阻止应用程序访问文件系统上的任意文件和文件夹。
如果没有有关该应用程序的更多详细信息,很难猜测为什么它无法写入该文件夹。
答案2
微软在这个链接中解释了一切。
基本上,在 Windows 资源管理器中查看文件夹时,文件夹级别的只读属性会被忽略。它只应用于文件级别。您可以通过进入其中一个只读文件夹并检查非只读文件的属性来检查这一点。如果您的文件当前设置为只读,您会发现您可以在文件夹级别清除只读属性,单击应用后它将保持这种状态。
顺便说一句,这与我使用 Scandisk USB 时遇到的问题不同,在 Scandisk USB 上,我的所有文件夹都设置为只读,当我尝试写入时,会出现写保护消息。显然,当 Scandisk USB 检测到错误时,它会默认为写保护模式。如果使用时间不到 5 年,Scandisk 将更换该 USB 盘,但您必须将 USB 盘寄回给他们。在我的案例中,我无法这样做,因为我正在处理 USB 盘上的机密专利信息。因此,在这种情况下,我的建议是避免使用在检测到内部错误时默认为写保护的 UAB 盘。最好找一个带有手动写保护开关的 UAB 盘(不容易!)。如果您遇到此问题,解决方法是将“只读”文件复制到硬盘上的新文件夹中,然后取消设置新文件夹和子文件夹的只读属性。这样,即使文件夹显示为只读,您也将能够如上所述在文件级别读取和写入文件。