黑马程序员——java基础——IO--字节流,字符流

来源:互联网 发布:mac 控制安卓手机屏幕 编辑:程序博客网 时间:2024/06/08 19:59

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------字节输入输出流,字符输入输出流


一:字节流

1.输出流:
            OutputStream:字节输出流顶级接口
                FileOutputStream:字节输出流具体实现类

   用FileOutputStream写出数据:
        A:操作步骤
            a:创建字节输出流对象
            b:调用write()方法
            c:释放资源
            
        B:代码:
          

<span style="font-size:24px;"> FileOutputStream fos = new FileOutputStream("fos.txt");                        fos.write("hello".getBytes());                        fos.close();</span>
         
        C:要注意的问题?
            a:创建字节输出流对象做了几件事情?
                   1:调用系统功能去创建文件
                   2:创建fos对象
                   3:把fos对象指向这个文件

            b:为什么要close()?

               1:让流对象变成垃圾,这样就可以被垃圾回收器回收了
               2:通知系统去释放跟该文件相关的资源

            c:如何实现数据的换行?

                  因为不同的系统针对不同的换行符号识别是不一样的。
                 1. windows: \r\n     2. linux: \n      3.Mac : \r     而一些常见的个高级记事本,是可以识别 任意换行符号的。
           d:如何实现数据的追加写入?

                     用构造方法带第二个参数是true的情况即可

2.输入流

        InputStream:字节输顶级接口
                FileInputStream:字节输流具体实现类

   

  FileInputStream读取数据
        A:操作步骤
            a:创建字节输入流对象
            b:调用read()方法
            c:释放资源
            
        B:代码:
          

<span style="font-size:24px;"> FileInputStream fis = new FileInputStream("fos.txt");                        //方式1,读取一个字节            int by = 0;            while((by=fis.read())!=-1) {                System.out.print((char)by);            }                        //方式2,读取一个字节数组            byte[] bys = new byte[1024];            int len = 0;            while((len=fis.read(bys))!=-1) {                System.out.print(new String(bys,0,len));            }                        //释放资源            fis.close();</span>


    (5)案例:复制文件

<span style="font-size:24px;">public class CopyFileDemo {public static void main(String[] args) throws IOException {// 封装数据源FileInputStream fis = new FileInputStream("c:\\a.txt");// 封装目的地FileOutputStream fos = new FileOutputStream("d:\\b.txt");// 复制数据int by = 0;while ((by = fis.read()) != -1) {fos.write(by);}// 释放资源fos.close();fis.close();}}</span>

二.字符流

  1.输入流

        Reader
            |--InputStreamReader
                |--FileReader
          
  2.输出流   

        Writer
            |--OutputStreamWriter
                |--FileWriter
          
    案例:复制文本文件

<span style="font-size:24px;">public class CopyFileDemo {public static void main(String[] args) throws IOException {// 封装数据源FileReader fr = new FileReader("c:\\a.txt");// 封装目的地FileWriter fw = new FileWriter("d:\\b.txt");// 读写数据int ch=0;while ((ch = fr.read()) != -1) {fw.write(ch);}                 // 一次一个字符数组                 char[] chs = new char[1024];                 int len = 0;                 while ((len = fr.read(chs)) != -1) {                 fw.write(chs, 0, len);                 fw.flush();                }               //释放资源fw.close();fr.close();}}</span>

   

0 0
原创粉丝点击