leaderofMhero 2015-08-28 17:35 采纳率: 0%
浏览 3069

JDK7的 try-catch 关闭资源

如题,JDK7说新增了try-catch 关闭资源的功能,试了一把确实行,关闭资源前,系统会自动把缓存里的数据推送到节点里, 但今天写了个例子 发现不能推送。

public class Test {
public static void main(String[] args) throws IOException {

    try (
            // 创建一个输出流,输出到who.txt文档
            FileOutputStream fos = new FileOutputStream("who.txt");
            // 将字节流转换成字符流
            OutputStreamWriter osw = new OutputStreamWriter(fos);
            // 将字符流包装成字符缓冲流
            BufferedWriter bw = new BufferedWriter(osw);
            // 创建一个输入流,从who.txt文档到内存中
            FileInputStream fis2 = new FileInputStream("who.txt");
            // 将字节流转换成字符流
            InputStreamReader isr = new InputStreamReader(fis2);
            // 将字符流包装成字符缓冲流
            BufferedReader bf = new BufferedReader(isr);) {
        bw.write("谦谦君子,温润如玉");
        bw.flush();// 必须手动推送,不然不能输出!!!
        String hasNext = null;
        while ((hasNext = bf.readLine()) != null) {
            System.out.println(hasNext);
        }
    } catch (Exception e) {
        // TODO: handle exception
    }

}

}

  • 写回答

1条回答 默认 最新

  • leaderofMhero 2015-08-28 17:41
    关注

    谁能解释下?是资源没关闭呢?还是关闭前没能够推送? 如果我不用try-catch,直接关闭,最后会把内容推送出来。
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintStream;

    public class FileInputStreamTest4 {

    public static void main(String[] args) throws IOException {
        // 创建一个输出流,输出到who.txt文档
        FileOutputStream fos = new FileOutputStream("who.txt");
        // 将字节流转换成字符流
        OutputStreamWriter osw = new OutputStreamWriter(fos);
        // 将字符流包装成字符缓冲流
        BufferedWriter bw = new BufferedWriter(osw);
        // 创建一个输入流,从who.txt文档到内存中
        FileInputStream fis2 = new FileInputStream("who.txt");
        // 将字节流转换成字符流
        InputStreamReader isr = new InputStreamReader(fis2);
        // 将字符流包装成字符缓冲流
        BufferedReader bf = new BufferedReader(isr);
    
        bw.write("谦谦君子,温润如玉");
        bw.close();// 还是手动推送的好
        String hasNext = null;
        while ((hasNext = bf.readLine()) != null) {
            System.out.println(hasNext);
        }
    
    }
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog