注册 登录
编程论坛 JAVA论坛

bufferdeoutputwriter

郭赛 发布于 2020-06-02 17:31, 2137 次点击
程序代码:
public class BufferedReader_demo01 {

    public static void main(String[] args) {
        File file = new File("C:\\Users\\郭赛\\Desktop\\demo03.txt");
        FileInputStream fis = null;
        InputStreamReader inputStreamReader = null;
        BufferedReader bufferedReader = null;
        FileOutputStream fos = null;
        OutputStreamWriter osr = null;


        try {
            /**
             * 建立字节流和字符流的关系
            
*/
            fis = new FileInputStream(file);
            inputStreamReader = new InputStreamReader(fis);
            fos = new FileOutputStream(new File("C:\\Users\\郭赛\\Desktop\\demo04.txt"));
            osr = new OutputStreamWriter(fos);
            char[] bytes = new char[1024];
            int a;
            while((a = inputStreamReader.read(bytes)) != -1)
                osr.write(bytes,0,a);

            bufferedReader = new BufferedReader(inputStreamReader);
            String encoding = inputStreamReader.getEncoding();
            System.out.println(encoding);
            String s;
            while ((s =  bufferedReader.readLine()) != null)
                System.out.println(s);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(bufferedReader == null)
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if(inputStreamReader == null)
                    inputStreamReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if(fis == null)
                    fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if(osr == null)
                    osr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if(fos == null)
                    fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }


        }

    }
}

为什么每次使用这个方法 while((a = inputStreamReader.read(bytes)) != -1)
                osr.write(bytes,0,a);
文件中的内容就会消失
3 回复
#2
郭赛2020-06-02 17:58
我加上flush或者close就会输出结果,这是为什么
#3
双子座私语2020-06-03 14:53
你这个出问题的while是什么逻辑,write方法是输出流的输出方法,这里是把数据写到文件里面,但是你为什么加个while判断?判断的条件还是输入流读写完毕?
#4
郭赛2020-06-04 22:06
回复 3楼 双子座私语
读和写是同步进行的啊,每次从流中读出一个就写一个字符到文件中
1