0

DOMparser を使用して XML スキーマ ファイルのバッチを解析しました。私が作成しているアプリケーションに不可欠ないくつかの注釈を追加しました。次に、これらの新しい「前処理済み」ファイルを新しい場所に書き込もうとすると、FileNotFound 例外 (アクセスが拒否されました) が発生します。

ファイルを書き込んでいるコードのスニペットは次のとおりです。

Transformer tFormer = TransformerFactory.newInstance().newTransformer();

// Set output file to xml
tFormer.setOutputProperty(OutputKeys.METHOD, "xml");

// Write the document back to the file
Source source = new DOMSource(document);
File preprFile = new File(newPath(xmlFile));
    // The newPath function is a series of String operations that result in a new
    relative path

try {
    // Create file if it doesn't already exist;
    preprFile.mkdirs();
    preprFile.createNewFile();
} catch (Exception e) {
    e.printStackTrace();
}

Result result = new StreamResult(preprFile);
tFormer.transform(source, result);

そして、私が得ているエラーは次のとおりです。

java.io.FileNotFoundException: absolutePathHere (Access is denied)

上記のスニペットのこの行を指している:

tFormer.transform(source, result);

私はWindowsマシンを使用しています(このエラーの原因となる可能性のある場所を読んでください)、すでにUACをオフにしようとしましたが、成功しませんでした.

createNewFile() メソッドは作成後にファイルを解放しないのではないかと考えていましたが、それに関する詳細情報を見つけることができませんでした。

ここで、StackOverflow が再び助けになることを願っています。

4

3 に答える 3

0

おそらく、そのディレクトリへの権限を持たないユーザーアカウントで実行されています。

于 2012-10-26T12:16:02.880 に答える
0

私は解決策を見つけました:

File preprFile = new File(directory1/directory2/directory3/file.xsd);
File directory = new File(directory1/directory2/directory3/);

try {
// Create file if it doesn't already exist;
    directory.mkdirs();
    preprFile.createNewFile();                              
} catch (Exception e) {
    e.printStackTrace();
}

助けてくれてありがとう。

于 2012-10-29T08:25:47.830 に答える
0

「ディレクトリが作成され、ファイルもディレクトリとして作成されたようです」とおっしゃいました。したがって、「wsreportkbo_messages.xsd」という名前のディレクトリが作成されると思います

ディレクトリを読み込もうとしているために、エラーが発生する可能性があります。listFiles()を使用して、ディレクトリ内のファイルを一覧表示できます。

ディレクトリを開いて読み取ることはできません。isFile()およびisDirectory()メソッドを使用して、ファイルとフォルダを区別してください。

于 2012-10-26T12:35:25.120 に答える