UNIXシステムにマウントされたウィンドウフォルダーにファイルを書き込もうとすると、投稿のタイトルエラーが発生します。Linux OS の Tomcat 6 内で実行され、Windows ネットワーク フォルダーに書き込む必要がある Web サービスを開発しました。システム管理者はこれを Linux サーバーにマウントしており、問題なくファイルを作成および変更できます。投稿されたコードを実行しようとすると、次の例外が発生します。
許可が拒否されました java.io.IOException: 許可が java.io.UnixFileSystem.createFileExclusively(Native Method) で java.io.File.createNewFile(File.java:850) で拒否されました
奇妙なことは、ネットワーク フォルダーの File.createNewFile メソッドに関連しているように見えることです。実際、サービスは、デバッグ (サービスの開発に使用する PC) と tomcat の両方で、問題なくローカル ファイル システムに書き込むことができます。フォルダー システム管理者は、Linux サーバーで私を提供しています。ファイルは作成されますが空であり、create メソッドに続くログ エントリは出力されません。さらに、プレーンな出力ストリームを使用してファイルを作成および書き込む場合、問題はありません。
ウェブ上で例外に関する説明が見つかりません。私は Java の経験があまりないので、このエラーが発生する理由を理解したいと思います。私は間違った方法でそれを使用していますか? ライブラリのバグですか?いくつかのパラメーターを渡すのを逃しますか? 述べたように、プレーンな出力ストリームを使用して問題を解決しました。これは、Java の理解を深めるための質問です。
FileOutputStream fos = null;
try{
log.info(String.format("file length: %s",streamAttach.length));
log.info(String.format("check File : %s",filename));
File f = new File(filename);
if(f.exists())
...
boolean done= f.createNewFile();//here comes the exception
//nothing of the following happens
if(!done)
throw new NWSException("error creating file");
log.info(String.format("file %s creato", nomeFile));
事前に回答ありがとうございます