亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我們可以在Java中更改只讀文件的文件屬性?

為什么我們可以在Java中更改只讀文件的文件屬性?

慕森卡 2022-09-28 15:29:52
請考慮以下代碼:import java.io.IOException;import java.nio.file.attribute.DosFileAttributeView;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.nio.file.attribute.FileTime;import java.time.Instant;public class Word {    public static void main(String[] args){        try{            Path path = Paths.get("readonly.txt");            Files.createFile(path);            DosFileAttributeView dos = Files.getFileAttributeView(path,DosFileAttributeView.class);            dos.setReadOnly(true);            //Files.delete(path); Access denied exception            dos.setHidden(true);            //can change attributes all we want            dos.setTimes(null,FileTime.from(Instant.now()),null);            dos.setReadOnly(false);            Files.delete(path);        }        catch(IOException e){            e.printStackTrace();        }    }}當然,嘗試修改只讀文件將給我們一個訪問消除例外。但是,如代碼中所示,這不適用于文件的屬性,可以根據需要對其進行修改。當然,這意味著任何人都可以輕松地將只讀屬性更改回false并根據需要修改文件。那么,為什么這是允許的,有人會如何在Java中創建一個實際的只讀文件呢?
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

Windows 文件的安全性由文件上的安全描述符控制。

當然,這意味著任何人都可以輕松地將只讀屬性更改回false并根據需要修改文件。

不是“任何人” - 只有那些擁有權限的人(見下文)才能這樣做。如果您創建了該文件,那么您可以做自己想做的事情也就不足為奇了。但一般來說,我希望其他用戶(不是管理員)默認情況下無法影響您的文件。

誰可以更改DOS屬性是通過安全描述符控制的 - 特別是通過授予FILE_WRITE_ATTRIBUTES訪問權限。當然,必須有人可以清除DOS只讀屬性,否則......一旦文件被標記為只讀,就沒有回頭路了。通常,如果您創建一個文件,您將完全控制它。

給定用戶或用戶組是否可以將數據寫入文件由訪問掩碼中的FILE_WRITE_ACCESS位(可能還有其他一些,但這是介紹性答案)控制。如果不向用戶授予寫入權限,則他們無法寫入。如果您真的想阻止某人寫入文件,請按照以下步驟操作。

DOS“只讀”屬性的存在是為了兼容,并且可能作為提示非常有用,表明您確實不想寫入此文件,但它不是安全限制。

這些都與Java無關,而是操作系統中文件系統的工作方式。您可以使用 Windows 資源管理器檢查文件上的安全設置。


查看完整回答
反對 回復 2022-09-28
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號