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 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记