次のコードは、必ずしもファイルを作成するわけではありません。 私が気づいている限り、このコードは初めて実行されましたが、例外はスローされず、createdFileSucceeded == trueでファイルは作成されません。Java file.createNewFileファイルが作成されず、例外がスローされない
私は、任意の入力が
File file = new File(tmpDir, fileName);
try {
if (tmpDir == null) {
String environmentHomePath // = somePath;
tmpDir = new File(environmentHomePath, "SampleDumps");
if (! tmpDir.exists() || ! tmpDir.isDirectory()) {
boolean mkdirSucceeded = tmpDir.mkdir();
if (! mkdirSucceeded) {
throw new IOException("Failed creating directory: '" + tmpDir.getAbsolutePath() + "'");
}
}
}
if (file.exists()) {
boolean deleteFileSucceeded = file.delete();
if (! deleteFileSucceeded) {
throw new IOException("Unable to delete pre existing sample file: '" + fileName + "'");
}
}
boolean createFileSucceeded = file.createNewFile();
if (! createFileSucceeded) {
throw new IOException("Unable to create sample file: '" + fileName + "'");
}
fw = new FileWriter(file);
bw = new BufferedWriter(fw);
StringBuilder sb = new StringBuilder("something...");
bw.write(sb.toString());
bw.flush();
}
catch (IOException ioe) {
log.warn("Unable to file invalid sample to file: '" + fileName + "'", ioe);
}
finally {
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
log.warn("Unable to close Writer to file: '" + fileName + "'", e);
}
}
else if (fw != null) {
try {
fw.close();
} catch (IOException e) {
log.warn("Unable to close Writer to file: '" + fileName + "'", e);
}
}
}
多分、アプリケーションを実行しているユーザが、そのディレクトリにあるファイルを作成するための十分な権限を持っていないのです。 –
@LuiggiMendozaですが、同じプロセス内で連続してコードを実行します。 –
私はあなたのコードを実行しようとしていないが、そのディレクトリに存在すると予想されるファイルを作成した後にtmpDirを作成すると、exist()のようなFileメソッドから予期しない動作が発生する可能性があります。 – GreyBeardedGeek