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 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?