请选择 进入手机版 | 继续访问电脑版
设为首页 收藏本站
开启辅助访问 切换到宽版

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

切换风格 立即注册 找回密码

Java教程网

新浪微博达人勋

3176

积分

925

帖子

742

贡献

Rank: 8Rank: 8

积分
3176

社区QQ达人

发表于 2017-8-14 08:55:05 | 显示全部楼层 |阅读模式
一.java IO流

  1.处理字节流的抽象类:  InputStream、OutputStream
    InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等.
    OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等.  
  2.处理字符流的抽象类:InputStreamReader  OutputStreamWriter
    InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流.

    OutputStreamWriter是字符流通向字节流的桥梁,它将字符流转换为字节流.
  3.BufferedReader BufferedWriter
     BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine读取一个文本行,
    从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
     BufferedWriter  由Writer 类扩展而来,提供通用的缓冲方式文本写入, newLine使用平台自己的行分隔符,
    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

    代码:
      public class FileIo {
    public static void main(String[] args) throws IOException {
        //1.按字节读写文件,用FileInputStream、FileOutputStream
        String path = "D:\\iotest.txt";
        File file = new File(path);
        InputStream in;
        //每次只读一个字节
        try {
            System.out.println("以字节为单位,每次读取一个字节");
            in = new FileInputStream(file);
            int c;
            while((c=in.read())!=-1){
                if(c!=13&&c!=10){    // \n回车的Ascall码是10 ,\r换行是Ascall码是13,不现实挥着换行
                    System.out.println((char)c);
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        //每次读多个字节
        try {
            System.out.println("以字节为单位,每次读取多个字节");
            in = new FileInputStream(file);
            byte[] bytes = new byte[10];   //每次读是个字节,放到数组里
            int c;
            while((c=in.read(bytes))!=-1){
                System.out.println(Arrays.toString(bytes));
            }
        } catch (Exception e) {
            // TODO: handle exception
        }


        //2.按字符读取文件,用InputStreamReader,OutputStreamReader
        Reader reader = null;
        try {//每次读取一个字符
            System.out.println("以字符为单位读取文件,每次读取一个字符");
            in = new FileInputStream(file);
            reader = new InputStreamReader(in);
            int c;
            while((c=reader.read())!=-1){
                if(c!=13&&c!=10){    // \n回车的Ascall码是10 ,\r换行是Ascall码是13,不现实挥着换行
                    System.out.println((char)c);
                }               
            }
        } catch (Exception e) {
            // TODO: handle exception
        }

        try {//每次读取多个字符
            System.out.println("以字符为单位读取文件,每次读取一个字符");
            in = new FileInputStream(file);
            reader = new InputStreamReader(in);
            int c;
            char[] chars = new char[5];
            while((c=reader.read(chars))!=-1){
                System.out.println(Arrays.toString(chars));
            }
        } catch (Exception e) {
            // TODO: handle exception
        }

        //3.按行读取文件
        try {
            System.out.println("按行读取文件内容");
            in = new FileInputStream(file);
            Reader reader2 = new InputStreamReader(in);
            BufferedReader bufferedReader = new BufferedReader(reader2);
            String line;
            while((line=bufferedReader.readLine())!=null){
                System.out.println(line);
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
    }
}

12.4  转换流--OutputStreamWriter类与InputStreamReader类
  整个IO包实际上分为字节流和字符流,但是除了这两个流之外,还存在一组字节流-字符流的转换类。
  OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流输出对象。
  InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象。
  以文件操作为例,内存中的字符数据需要通过OutputStreamWriter变为字节流才能保存在文件中,读取时需要将读入的字节流通过InputStreamReader变为字符  流。
来自群组: java开发组

新浪微博达人勋

2823

积分

705

帖子

706

贡献

Rank: 6Rank: 6

积分
2823
发表于 2017-8-14 08:55:31 | 显示全部楼层
支持楼主,用户楼主,楼主英明呀!!!

新浪微博达人勋

3036

积分

759

帖子

759

贡献

Rank: 8Rank: 8

积分
3036
发表于 2017-8-15 00:54:48 | 显示全部楼层
是爷们的娘们的都帮顶!大力支持

新浪微博达人勋

6643

积分

1660

帖子

1661

贡献

Rank: 8Rank: 8

积分
6643
发表于 2017-8-19 01:10:11 | 显示全部楼层
高手云集 果断围观

新浪微博达人勋

6901

积分

1750

帖子

1700

贡献

Rank: 8Rank: 8

积分
6901

社区QQ达人最佳新人活跃会员热心会员

发表于 2017-8-20 11:55:47 | 显示全部楼层
秀起来~

新浪微博达人勋

3066

积分

768

帖子

766

贡献

Rank: 8Rank: 8

积分
3066

社区QQ达人

发表于 2017-8-21 06:54:08 | 显示全部楼层
沙发???

新浪微博达人勋

3104

积分

776

帖子

776

贡献

Rank: 8Rank: 8

积分
3104

社区QQ达人

发表于 2017-8-21 18:31:53 | 显示全部楼层
楼主呀,,,您太有才了。。。

新浪微博达人勋

2966

积分

742

帖子

741

贡献

Rank: 6Rank: 6

积分
2966
发表于 2017-8-28 07:14:57 | 显示全部楼层
有空一起交流一下

新浪微博达人勋

6959

积分

1811

帖子

1673

贡献

Rank: 8Rank: 8

积分
6959

社区QQ达人最佳新人活跃会员热心会员

发表于 2017-8-31 20:57:47 | 显示全部楼层
学习下

新浪微博达人勋

3418

积分

976

帖子

793

贡献

Rank: 8Rank: 8

积分
3418

社区QQ达人

发表于 2017-9-3 04:38:32 | 显示全部楼层
支持,楼下的跟上哈~
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋|手机版|Archiver|Java教程网    

GMT+8, 2019-5-27 20:14 , Processed in 0.312500 second(s), 42 queries .

Powered by Discuz X3.2

© 2001-2013 JAVA教程网

快速回复 返回顶部 返回列表