Java中如何创建目录?mkdir()与mkdirs()失效问题及解决
问题:Java中mkdir()/mkdirs()无法创建目录,文件写入失败
我之前尝试在循环里创建临时目录并写入文件,但一开始的代码没法正常创建目录,导致文件写入操作失败。初始代码如下:
... while (leitor.hasNext()){ String [] plv = LerPalavras(tamMem, leitor); Arrays.sort(plv); String nomeTemp = "/temp/temp" + contador + ".txt"; // 我需要创建这个目录 try{ escritor = new FileWriter(nomeTemp); for (int i = 0; i < tamMem; i++) { escritor.write(plv[i] + " "); } escritor.close(); } catch (IOException e){ System.out.println(e.getMessage()); } contador++; } ...
解决方案:先确保目录存在,再创建文件
后来我调整了代码逻辑,先显式创建目标目录,再基于目录对象来创建文件,问题就顺利解决了!修改后的代码如下:
File pastaTemp = new File("/temp/temp"); pastaTemp.mkdirs(); while (leitor.hasNext()){ String [] plv = LerPalavras(tamMem, leitor); Arrays.sort(plv); File arqTemp = new File (pastaTemp, contador + ".txt"); try{ escritor = new FileWriter(arqTemp); for (int i = 0; i < tamMem; i++) { escritor.write(plv[i] + " "); } escritor.close(); } catch (IOException e){ System.out.println(e.getMessage()); } contador++; }
关键修改说明:
- 先通过
File pastaTemp = new File("/temp/temp")创建目录对象,调用mkdirs()方法可以一次性创建所有不存在的父目录(这比mkdir()更稳妥,mkdir()只能创建单级目录,若父目录不存在就会直接失败) - 创建文件时,改用「目录对象+文件名」的方式构建
File实例,确保文件路径指向已创建的目录下,从根源避免了路径错误导致的写入失败问题
内容的提问来源于stack exchange,提问作者marianod323
相关产品推荐
相关产品推荐

