2017-05-24 40 views
-1

.jarファイル経由でプロパティファイルに書き込む際に問題があります。 私の '出力'はEclipseでしか動作しますが、それを変更して実行可能な.jarで動作させる方法はわかりません。実行可能ファイル.jarからプロパティファイルに書き込む

 FileOutputStream output = new FileOutputStream("src/application/data.properties",true); 
     InputStream in = Login.class.getResourceAsStream("data.properties"); 
     properties.load(in); 

     properties.setProperty(username+"Username", username); 
     properties.setProperty(username+"Password", password); 
     properties.store(output, formattedDate); 

EDIT:

私はエラーを取得していませんよ。私はこの 'username'と 'password'をプロジェクトに含まれているdata.propertiesファイルに保存します。私はEclipseで動かすと動作します。 .jarファイルで実行すると、それらのデータはプロパティファイルに書き込まれません。 jarを実行しているときに '出力'を作成するとローカルでのみ作成され、適切なファイルへのアクセスはできませんが、間違っている可能性があります。私はこのアクセス権を得て、私が.getResourceAsStream()によって 'in'を作成するときにこの既存のファイルで作業することはできますが、同様の方法で 'output'をどのように作成すればいいのか分かりません。プロジェクト。 「エクスポート - >実行可能なJARファイル」でeclipseで.jarを作成し、ダブルクリックして実行します。

+2

あなたは十分な情報を提供していません。何を手に入れていますか?なんでしょう?この瓶をどうやって作りますか?どのようにそれを実行するのですか?私たちは推測することはできません。 – Nathan

+1

別の場所でjarファイルとして実行している場合、 "src/application"というフォルダはおそらく存在しません。エラーが発生していますか? –

+0

エラーは表示されません。 – Tomek

答えて

1
  1. 私は推測を危険にさらすだろう:getResourceAsStreamは性質が JAR内部ファイル読み込みストリームを返して、FileOutputStreamは外 JARをファイルに対処している間に - JAR内のプロパティが変更されることはありません!

    (実行中の)JARファイルを上書きすることは自明ではありません。そのためにはJarを再作成する必要があります。おそらく、外部ファイルからの書き込み/読み取りのみが良い、つまりgetResourceAsStreamの代わりにFileInputStreamを使用するほうがよいでしょう。 "src"ディレクトリのファイルにアクセスするのはちょっと奇妙です。なぜなら、これは通常、配備されたシステム/コードには含まれていないからです。

  2. FileOutputStream(..., true)を使用すると、ファイルの最後にデータが追加されます。既存のユーザーのデータは上書きされません。それが問題なのか、このコードが新しいユーザーのためだけに呼び出されたのかわからないのですか?明確なパスワード(ファイルまたはデータベース)を保存

  3. は、潜在的なセキュリティ上の脅威である...

関連する問題