いつもお世話になっています。
ちょっと気になったので、質問させて頂きました。
現在、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メソッドがどうやって機能しているのかがわかりません。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
読み込み専用のファイルへの書き込みを許可する方法は標準のJavaにはないと思われます。
必要ならばJNIかRuntime.exec()を使って実現するしかないのでは。質問中にあるnativeメソッドは、たとえばUNIX系のOSならばchmodとかfchmodを呼んでファイルのアクセス許可を変更しているんじゃないでしょうか。
回答ありがとうございます。
やはり、読み取り解除は、javaではできそうにないんですね。
>質問中にあるnativeメソッドは、たとえばUNIX系のOSならばchmodとかfchmodを呼んでファイルのアクセス許可を変更しているんじゃないでしょうか。
javaで直接はわからないものなんですね。
今はLINUX系のOSではないんでUNIXを入れたときに一度みてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
準・究極の選択
「年収1000万円で一生カレーライス」か 「年収180万円で毎日何でも食べ放題」 あなたはどちらを選びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Eclipse で同期するたびに読み取り専用ファイルになる
その他(ソフトウェア)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
staticと+=の意味を・・・
-
public static void main (Stri...
-
[String]の意味は?
-
String.containsの反対機能はあ...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
Labelコントロールに数字を代入...
-
VBA 同じ名前のオブジェクトを...
-
同一パッケージにあるクラスが...
-
複数の変数を宣言する時、同時...
-
委譲って何ですか?
-
C#でオブジェクトの有無を取得する
-
JAVAからHTMLへ値を返す方法
-
「天声人語」をインターネット...
-
VB6のツールボックスへのコンポ...
-
A・B・Cクラスとは?
-
Accessの連結・非連結オブジェ...
-
中学2年です‼︎ 明日.学級の級長...
-
VB.NETでMSComm が追加できず?
-
BSアンテナのサイズ(札幌)に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
レコード件数の表示
-
YYYYMMDD書式の日付に対する適...
-
StringBufferからStringへキャ...
-
Strutsでチェックボックスの値...
-
Java初心者です、エラーの意味...
-
Google Apps Script で getRang...
-
C# でメソッドに送られてきたOb...
-
メソッドの引数に指定されてい...
-
なぜprotected overrideなのか
-
Fileの読み取り専用の解除
-
return new使用時
-
クラスを作るとメソッドの数が...
-
javaに"search"という関数 or ...
-
C# 点の描き方をおしえてくだ...
-
親の親のメソッドを呼ぶには?
-
Javaの関数名が長い?
-
CSVから読み込んだデータの保持...
-
別クラスのmainメソッドの実行
おすすめ情報