以下代码并不总是创建该文件。 据我所知,这个代码第一次运行,虽然没有抛出异常并且createdFileSucceeded == true,但是文件没有被创建。
我在Windows上运行代码,java 6.
任何输入都可能有用
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);
}
}
}
答案 0 :(得分:6)
如果file.createNewFile()
返回true
,则会创建一个文件。
最可能的解释是创建文件,但不是在您期望的位置。我希望您使用文件的相对路径名...
仔细查看您的代码和评论,我认为这正是发生的事情。看一下创建临时目录的方式。首先使用tmpdir
作为父目录构造文件。然后测试以查看tmpdir
是否为null
并创建目录。但是你继续使用File
对象,而STILL有一个null
父目录!!
您需要在检查File
之后创建tmpdir
对象,并在需要时创建它。
答案 1 :(得分:2)
您处理tmpDir
的方法存在缺陷。该文件正在某处创建。
来自File(String, String)
的Javadoc:
如果parent为null,则创建新的File实例,就像调用给定子路径名字符串上的单参数File构造函数一样。
答案 2 :(得分:2)
经过一些测试,我发现了错误并纠正了错误:
try {
//create tmpDir if its null
if (tmpDir == null) {
String environmentHomePath = "D:/"; //change to somepath
//tmpDir must be a directory path
tmpDir = new File(environmentHomePath);
if (!tmpDir.exists() || !tmpDir.isDirectory()) {
boolean mkdirSucceeded = tmpDir.mkdir();
if (!mkdirSucceeded) {
throw new IOException("Failed creating directory: '" + tmpDir.getAbsolutePath() + "'");
}
}
}
//create the path
File file = new File(tmpDir, fileName);
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 {
try {
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);
}
}
答案 3 :(得分:0)
检查您的文件名。它不应包含冒号异常的冒号.subcontainer {
margin:0 auto;
width: 80%;
padding: 30px 20px;
background-color: white;
border-radius: 5px 5px 5px 5px;
display:inline-block;; //add this line
}
或任何其他类似字符。