- 締切済み
Fileの読み取り専用の解除
いつもお世話になっています。 ちょっと気になったので、質問させて頂きました。 現在、Fileを使用して、読み取り専用の設定を行っているのですが、 その際、一度「読み取り専用」にしてしまったら、 解除は不可能なのでしょうか? 作成したクラスが、 String fileName = "dataList.txt"; File file = new File(fileName); String str = "あいうえお"; String sep = System.getProperty("line.separator"); //読み取り設定 file.setReadOnly(); try{ FileWriter fw = new FileWriter(file); fw.write(str); fw.write(sep); fw.write(str); fw.flush(); fw.close(); }catch(FileNotFoundException e) { }catch(IOException i){} //ここで読み取り専用を解除したい if(file.canRead() ) { System.out.println("可能です"); } if(file.canWrite()){ System.out.println("書き込み可"); }else { System.out.println("不可"); } 気になって元のFileクラスのソースをみてみたのですが、 /**readOnlyメソッドのみ、抜粋 **/ public boolean setReadOnly() { //Securityの設定 SecurityManager security = System.getSecurityManager(); //securityの確認 if (security != null) { //この時のpathは fileNameとおなじこと security.checkWrite(path); } //ここを設定してなかったら、読み取り専用にはならない気が.. return fs.setReadOnly(this); } で、どうしてもわからないのが、FileSystemクラスのnativeメソッドを呼んでいることなのですが、このnativeメソッドがどうやって機能しているのかがわかりません。 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- salsberry
- ベストアンサー率69% (495/711)
お礼
回答ありがとうございます。 やはり、読み取り解除は、javaではできそうにないんですね。 >質問中にあるnativeメソッドは、たとえばUNIX系のOSならばchmodとかfchmodを呼んでファイルのアクセス許可を変更しているんじゃないでしょうか。 javaで直接はわからないものなんですね。 今はLINUX系のOSではないんでUNIXを入れたときに一度みてみます。 ありがとうございました。