2016-08-30 10 views
-1

私は現在、テキストファイルを使用するユーザー名とパスワードシステムを持つプロジェクトを作っています。私のプロジェクトを整理しておくために、彼らは同じnetbeansフォルダの中にいます。ただし、そこにあるファイルはsrc\classes\prototype1\textFilesですが、ユーザーを追加すると編集中のファイルはbuild\classes\prototype1\textFilesになります。これが原因で発生する問題は、netbeansを再起動するたびに、buildフォルダの編集済みデータではなく、srcフォルダにある元のデータだけになります。Javaソースファイルを編集する

私が使用したコードは次のとおりです。

try { 
    File f = new File(getClass().getResource("textFiles\\PasswordScreen.txt").toURI()); 
    f.setWritable(true); 
    FileWriter w = new FileWriter(f); 
    BufferedWriter writer = new BufferedWriter(w); 
    wipeFile(f); 
    for (int i = 0; i <= length; i++){ 
     writer.write(user[i].getUsername()); 
     writer.newLine(); 
     writer.write(user[i].getPassword()); 
     writer.newLine(); 
     writer.write(Integer.toString(user[i].getState())); 
     writer.newLine(); 
     writer.write("-"); 
     writer.newLine(); 
    } 
    writer.close(); 
    f.setReadOnly(); 
} catch(Exception e){System.out.println("error writing to file");} 
+0

'src /'の下のものは、純粋にコンパイルするJavaコードです。そこにはリソースファイルを置いてはいけません。 –

+1

なぜ 'build'フォルダ内のファイルを編集していますか? .jarファイルにコードをデプロイすると、そのファイルはハードドライブ上のファイルであっても*されません。編集するファイルは、アプリコード階層の外に*ある必要があります。 – Andreas

+1

リソースは読み取り専用である必要があります。アプリケーションは通常、.jarファイルとして配信されます。この場合、別のファイルではないため、リソースに書き込むことはできません。 (また、 'getResource'はすべてのプラットフォームでファイルセパレータとしてスラッシュ('/')を使用しますが、引数は基本的に相対URLです) – VGR

答えて

1

これは効果のミックスです。

アドレス指定しているファイルは、classesフォルダにあります。このフォルダは、コンパイラの出力フォルダです。したがって、コンテンツはsrcフォルダから作成されるため、定義ごとに揮発性のコンテンツが含まれます。

IDE(この場合はNetBeans)を起動すると、プロジェクトがクリーンアップされ、クラスが再構築され、以前に編集されたユーザー設定が上書きされます。

解決策は簡単です。編集したファイルをclassesフォルダに書き込まないでください。別の場所(現在のディレクトリなど)を使用します。これは通常、IDEの起動用のプロジェクトルートであり、適切に制御することができます。

ファイルの場所をどこかで設定できるようにすることができます(コマンドライン、環境変数など)。

+0

ありがとうございます。私は朝にこれを試し、その時報告します! –

関連する問題