为了账号安全,请及时绑定邮箱和手机立即绑定

读取字节流,字符流中全部数据的两种方式

标签:
Java

1.读取字节流FileInputStream中的全部字节

package IO;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class FileInputStreamTest {
    int c=0;
    public void inputStream() throws IOException  {
        InputStream i=new FileInputStream("E:\\xiaoxin\\workspace\\i.txt");
        byte bytes[]=new byte[1024];
        int e;
        int d;

        //1.从流中一个一个字节读取
                //i.read()返回 0 到 255 范围内的 int 字节值,int的低八位
        while((e=i.read())!=-1){
            if(e<15){
                System.out.print("0");
            }
            System.out.print(Integer.toHexString(e&0xff)+" ");  
            //每打印十个字节,换一行
            c++;
            if(c%10==0){
                System.out.println();
            }
        }*/
        //2.从流中批量读取字节数据
                //I.read(bytes,0,bytes.length)表示从流中批量读取字节数据到字节数组bytes中,从0位置开始放,最多放bytes.length个字节
                //I.read(bytes,0,bytes.length)的返回值表示读到的有效字节个数,如果I.read(bytes,0,bytes.length)=-1,表示EOF表示,没有任何字节可取或者已读取完毕
        while((d=i.read(bytes, 0,bytes.length))!=-1){
            for(int j=0;j<d;j++){
                if(bytes[j]<=15&&bytes[j]>=0){
                    System.out.print("0");
                }
                System.out.print(Integer.toHexString(bytes[j]&0xff)+" ");
                c++;
                if(c%10==0){
                    System.out.println();
                }
            }
        }
        i.close();

    }
    public static void main(String[] args) {
        FileInputStreamTest is=new FileInputStreamTest();
        try {
            is.inputStream();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

2.读取字符流FileReader中的全部字符

package IO;

import java.io.FileReader;
import java.io.IOException;

public class InputStreamReaderTest {

    public static void main(String[] args) throws IOException {
        FileReader isr=new FileReader("E:\\xiaoxin\\workspace\\Imooc2\\i3.txt");
        //从流中一个一个字符读取
                //isr.read返回 0 到 65535 范围内的 int 字符(相当于两个字节),int的低十六位
        int a;
        while((a=isr.read())!=-1){
            System.out.print((char)a);
        }

        //从流中批量读取字符
        int b;
        char chars[]=new char[1024*1024];
        while((b=isr.read(chars, 0, chars.length))!=-1){
            //把读取的有效字符转换成字符串并输出
            String s=new String(chars,0,b);
            System.out.println(s);
        }

    }

}
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
9
获赞与收藏
227

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消