使用OutputStreamWriter来写入文件一定要记得close!不然写入文件的字符串会有可能不完整!

//将StringBuffer的内容写入文件
FileOutputStream fileOutputStream=null;
OutputStreamWriter writer=null;
try {
    fileOutputStream=new FileOutputStream(newFile,false);
    writer=new OutputStreamWriter(fileOutputStream,"UTF-8");
    writer.write(newFileIn.toString());
} catch (FileNotFoundException e) {
    LOGGER.error("文件输出流失败!");
} catch (UnsupportedEncodingException e) {
    LOGGER.error("因编码问题,字符流转字节流失败!");
} catch (IOException e) {
    LOGGER.error("字节流写入文件失败!");
}finally {
    try {
        writer.close();
        fileOutputStream.close();
    } catch (IOException e) {
        LOGGER.error("关闭输出流失败!");
    }
}

一开始的时候:

try {
    writer.close();
    fileOutputStream.close();
} catch (IOException e) {
    LOGGER.error("关闭输出流失败!");
}

是没有的,然后我又多次调用这段代码来往文件当中写内容,发现最后写入的内容当中会有一部分的字符没有写进去。

我一开始以为是Map/StringBuffer的存储大小限制,我以为我存进去的内容有可能是没有存进去的,但是我在控制台打印,发现内容存进去了。于是只能是写入文件的方法出错了,后来偶然规范了一下代码:close了一下,发现就正确了。

所以下次要注意:代码的书写要规范,输入输出流,要记得close啊!

 

你可能感兴趣的:(Java)