我尝试使用此代码编写java(使用Windows)数据时遇到问题,我创建了一个目录(实际上已创建)但是当它创建文件时它失败
String rutaescribir="C"
+ ":"
+ "\\"
+ "Users\\EmanuelJosé\\Desktop\\Cplexjava\\memoria\\java"
+ numesc + "esc\\";
Writer writer5=null;// si lo usas acuerdate de cerrarlo
java.io.File directorio5 = new File(rutaescribir+"inf");
directorio5.mkdir();
String directorio523=rutaescribir+"inf\\";
try {
writer5 = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(directorio523+"inf"+num+".txt"), "utf-8"));
writer5.write(numesc+"\r\n");
writer5.write("hola");
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {writer5.close();} catch (Exception ex) {//ignore}
}
}
在相同的代码中我有其他文件要写,但它们有效,我寻找任何差异,但它是相同的......这是一个工作的例子
Writer writer =null;//
java.io.File directorio1 = new File(rutaescribir+"heuristica");
String directorio12=rutaescribir+"heuristica\\";
directorio1.mkdir();
try {
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(directorio12+"heuristica"+num+".txt"), "utf-8"));
writer.write(numesc+"\r\n");
}
} catch (IOException ex) {
ex.printStackTrace();
// report
} finally {
try {writer.close();} catch (Exception ex) {//ignore}
}
}
我真的没有看到任何区别......我不知道为什么有些人会工作而其他人不会......请帮助!
我得到的错误是:
java.io.FileNotFoundException: C:\Users\EmanuelJosé\Desktop\Cplexjava\memoria\java3esc\infactiblidades\infactibilidades0.txt (El sistema no puede encontrar la ruta especificada)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at memoria.bosques.imprimirenarchivos2(bosques.java:19758)
所以文件没有创建,但为什么?至少我看到该文件夹存在。
答案 0 :(得分:3)
尝试更改行
directorio5.mkdir();
到
directorio5.mkdirs();
这可确保创建路径结构中的所有目录。使用mkdir()
仅创建路径中的最后一个目录。您还没有测试mkdir()
的返回来检查目录是否真正创建,即
if (directario5.exists() || directario5.mkdirs()){
// Go ahead, because our directory is now guaranteed to exist.
}