私のプログラムは、Webサイトのソースコードをダウンロードし、変更し、ファイルを作成し、FTP経由で再アップロードします。作成したファイルを開こうとするとしかし、私は次のエラーが表示されますアクセスが拒否されましたJava FileWriter/FileInputStream
java.io.FileNotFoundException: misc.html (Access is denied)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at Manipulator.uploadSource(Manipulator.java:63)
at Start.addPicture(Start.java:130)
at Start$2.actionPerformed(Start.java:83)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
私は、フォルダのディレクトリに移動し、私はアクセスが拒否されました受信メモ帳で「misc.html」を開こうとします。私のコードはかなり単純です:
File f = new File(page.sourceFileName);
try {
FileWriter out = new FileWriter(f);
out.write(page.source);
out.close();
} catch (IOException e) {
e.printStackTrace();
} InputStream input = new FileInputStream(f);
これは私のプログラムからの抜粋です。私はこれを別のテストプログラムにコピーして正常に動作し、misc.htmlファイルを作成し、FileInputStreamと手動で再オープンします。
私は管理者の権利について心配しますが、問題のプログラムの後にRIGHTを実行すると、テストプログラムは正常に動作します。私はまた、ファイルが存在するかどうかをチェックしてFileメソッドを持つファイルであり、それも同様です。これは私が以前の入出力を適切に閉じない結果ですか?私はすべてをチェックしようとしましたが、私はかなり肯定的です。終了するとすぐにすべてのストリームを閉じます。
Help! :)
UPDATE:
私はFileInputStreamのコードをコメントアウトし、ちょうどファイルがまだアクセス拒否されてFileWriterを残す場合。 FileWriterコードを削除すると、Fileは作成されません(つまり、何も上書きしていません)。 FileWriterコードは、ファイルが初めて作成されたときに例外がスローされませんが、手動でファイルを開くことはできません。
しかし、問題は、InputStream input = ... – Matt
にエラーが表示されています。ファイルを読み取る権限を_do_持っていれば、そのことがわかります。ストリーム処理を修正して、やり直してください。 – Bozho
私はまだ同じスタックトレースを受け取ります。 FileWriterはうまく書けるようですが、どういうわけかFileInputStreamが開くことができない方法で「misc.html」を作成します。 FileInputStreamのキャッチはエラーを捕捉し、インスタンス化が失敗したためにクローズする必要はありません(nullチェック)。 – Matt