お世話になっております。
以下の事象により困っています。
わかる方がいましたら、ご教示願います。
■やりたいこと
javaで指定したファイルの文字列Aを文字列Bに置換したい
■問題点
ローカルでは問題なくファイル操作できるが、
本番環境ではアクセス権の問題でファイル操作できない。
■環境
ローカル・本番ともにwindows
■現状の解決策
java.io.FilePermissionクラスを使用して
書き込み権限を与え、ファイル操作する
■ソース
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FilePermission; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FileReplacer { public static int strReplace(String file_name, String before_str, String after_str){ int err_code = 0; try { FilePermission perm = new java.io.FilePermission(file_name, "write"); //置換対象ファイル読込 File file = new File(file_name); String strReadText = null; StringBuffer sbWriteText = new StringBuffer(); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); //ファイルを読込んで指定文字を置き換える。 while((strReadText = br.readLine()) != null) { strReadText= strReadText.replaceAll(before_str,after_str); sbWriteText.append(strReadText); sbWriteText.append("\r\n"); } //置き換えた文字列でファイルを置き換える。 FileWriter fw = new FileWriter(file); fw.write(sbWriteText.toString()); fw.close(); fr.close(); }catch(FileNotFoundException e){ e.printStackTrace(); err_code = 1; }catch(IOException e){ e.printStackTrace(); err_code =1; } return err_code; } }
■わからないこと
FilePermission perm = new java.io.FilePermission(file_name, "write");
を追記して、指定ファイルの書き込み権限を付与?してみましたが、
ここからどのように
File file = new File(file_name);
につなげるかがわかりません。
もしくは他のやり方があればご教示願います。
説明不足かもしれませんが、ご回答よろしくお願いいたします。
//追記(備忘)
java.policyファイルをいじらないとダメ?
回答2件
あなたの回答
tips
プレビュー