java - 无法将大字符串写入文件

标签 java string file

我正在尝试将一个大字符串(单行)打印到一个文件中。但是字符串在两者之间被截断了。知道为什么会这样吗?

void writeToFile(String schemaString,String message){

    try{
        FileWriter fw = new FileWriter("D:\\Servicelog.txt", true);                     
        java.util.Date date= new java.util.Date();
        fw.write(new Timestamp(date.getTime())+"\n");
        fw.write(message+"\n");         
        fw.write("schemaBegins\n"+schemaString+"\n"+"schemaEnds");
    }catch(Exception e){
        e.printStackTrace();
    }   

}

最佳答案

您应该记得关闭文件。

FileWriter fw = null;
try {
    fw = new FileWriter("D:\\Servicelog.txt", true);
    java.util.Date date = new java.util.Date();
    fw.write(new Timestamp(date.getTime()) + "\n");
    fw.write(message + "\n");
    fw.write("schemaBegins\n" + schemaString + "\n" + "schemaEnds");
} catch (Exception e) {
    e.printStackTrace();
} finally {
    if ( fw != null ) {
        fw.close();
    }
}

Java7 和更新版本使用 try-with-resources 封装了该机制:

try (FileWriter fw = new FileWriter("D:\\Servicelog.txt", true) ) {
    java.util.Date date = new java.util.Date();
    fw.write(new Timestamp(date.getTime()) + "\n");
    fw.write(message + "\n");
    fw.write("schemaBegins\n" + schemaString + "\n" + "schemaEnds");
} catch (Exception e) {
    e.printStackTrace();
}

写入任何 Writer 都可以被缓冲,如果您不关闭它,就会留下一些未写入的数据。

关于java - 无法将大字符串写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37028484/

相关文章:

javascript - 如何从 window.location.pathname 获取文件名

python - 如何在python中捕获值错误

java - 在 Java 中打印对象值

php - 错误 : Array to string conversion error

php - 使用 PHP 从 MySQL 数据库中选择可能相关的项目(如 : for 'orange' , 给出 'bread')

java - 数组越界问题

java - 是否能够通过 docker swarm 或 kubernetes 停止和启动特定服务?

java - 将 JedisPool 与 Tomcat 一起使用,资源不会返回到池中

java - nio解析xml文件时出错

c# - 获取除 .zip 之外的所有文件