项目完成 开始导数据 数据操作完成入数据库 同时每条数据会形成一个XML文件 
 用fileoutputStream 写xml文件 一条写一个 这样反复的打开一个fileoutputstream 一开始前面操作都比较快 但是到了700多条的时候 速度就非常慢  每次写完 流都有正确的关闭 为什么速度会突然慢很多呢 public String createSaveFile(String formName, String sn, String fileStr)
throws IOException {
// 设置配置文件路径
PropertiesUtil
.setResourceBundleBaseName("com.sunnysoft.schss.common.properties.config");
// 根据系统设置文件保存的根路径
String rootPath = null;
String osName = System.getProperty("os.name");
if (osName != null && osName.length() >= 7
&& "windows".equalsIgnoreCase(osName.substring(0, 7))) {
rootPath = PropertiesUtil.getMessage("fileSaver.windows");
} else {
rootPath = PropertiesUtil.getMessage("fileSaver.unix");
}
int maxFileNum = Integer.parseInt(PropertiesUtil
.getMessage("maxFileNum"));
// 通用路径分隔符
String separator = File.separator;
// 保存文件目录
String saveDirPath = null;
// 保存文件路径
String filePath = null;
// 获取第一级目录
File firstDir = new File(rootPath + formName);
if (!firstDir.exists()) {
firstDir.mkdirs();
}
// 获取第二级目录
File[] secondDirs = firstDir.listFiles();
if (secondDirs != null && secondDirs.length != 0) {
for (File secondDir : secondDirs) {
File[] files = secondDir.listFiles();
if (files == null || files.length < maxFileNum) {
saveDirPath = secondDir.getPath();
break;
}
}
if (saveDirPath == null) {
File subDir = new File(firstDir.getPath() + separator
+ formName + "sub" + (secondDirs.length + 1));
subDir.mkdirs();
saveDirPath = subDir.getPath();
}
} else {
File subDir = new File(firstDir.getPath() + separator + formName
+ "sub" + 1);
subDir.mkdirs();
saveDirPath = subDir.getPath();
}
filePath = saveDirPath + separator + formName + sn + ".xml";
File xmlFile = new File(filePath);
// xmlFile.setWritable(false);
// xmlFile.setReadable(false);
// xmlFile.setExecutable(false);
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(
xmlFile), "GBK");
out.write(fileStr);
out.close();
String retFilePath = filePath.replace('\\', '/').substring(
rootPath.length());
return retFilePath;
}
请问下是为什么

解决方案 »

  1.   

    看核心段,buffering一下:
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(xmlFile), "GBK"));
    试试,因为没有buffering的话,流内容会被直接写到文件,影响效率
      

  2.   

    new FileOutputStream(
    xmlFile), 也需要关闭吧。
      

  3.   

    感谢大家 
    找到问题了
    File[] files = secondDir.listFiles();
    问题在这里当文件夹里文件写多了的时候 每次都要循环整个文件夹 在去弄数组 再达到一定数量以后 效率自然就低了下来。