Java 格式化程序输出

标签 java formatter

格式化程序仅在关闭流时才写出,这是真的吗?

代码:

public void save(String content, String filename) {
    if(filename!=""){
        setFileName(filename);
        try {
            output = new Formatter(new File(fileName));
            output.format("%s",content);
        } catch (FormatterClosedException ex){
            System.err.println("Error writing to file");
            return;
        } catch ( NoSuchElementException ex){
            System.err.println("invalid input");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {
            output.close();
        }

起初我忘记添加带有output.close()的finally block ,当该方法被调用时它不会写任何东西。那么,格式化程序仅在关闭流时才实际写入其内容,这样正确吗?

最佳答案

仅当您调用 close() 时才访问资源(在本例中为文件)的假设无效

通过调用close(),您可以确保写入完成并释放资源。

对它的写入取决于类BufferedWriter,这意味着当超过缓冲区大小时,数据将从[缓冲区]移动到资源[文件]。您可以通过调用 flush() 强制您的应用执行此操作,这就是 close() 的作用。

缓冲区长度为 1KB(8192 位)时的默认大小。

关于Java 格式化程序输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22042609/

相关文章:

java - 将函数传递给类

C# Web API 基于 GET 请求的 XML 或 JSON

ios - 找出系统默认的单位类型(升/加仑)

java - String.format 运行时格式化

java - java文件中的其他方法是否可以在Android Studio的onCreate方法中调用?

java - R 文件看不到我的 src 文件

java - Hibernate.initialize() 被完全忽略

java - 更改包名称后 Android 应用程序崩溃

dart - 是否有任何命令行工具来格式化 Dart 代码?

objective-c - 如何将数字转换为指示性字符串