java中关于I/O流的介绍-创新互联

I/O流,就是用来读写数据的,也称为输入,输出流

目录

公司主营业务:网站建设、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出长宁免费做网站回馈大家。

1.I/O流的简介

2.I/O流的分类

3.I/O流体系

4.文件字节输入流 FileInputStream--读取文件数据

5.文件字节输出流OutPutStream--写数据到文件

6.两种资源释放操作

7.字符输入流Reader

8.字符输出流Write

9.字节流字符流如何选择


1.I/O流的简介

I表示input,把硬盘文件中的数据读入到内存中的过程,称之为输入,负责读。

O表示output,把内存的数据写入硬盘的过程,为输出,负责写。

2.I/O流的分类

1.按照流的方向:可以分为输入流,输出流

2.按照流中数据的最小单位:分为字符流和字节流

3.I/O流体系
             字符流             字节流

Writer

Reader

InputStream

OutputStream

字符输入字符输出字节输入字节输出

I/O流体系因为是抽象,所以不能直接用,需要用他们的子类。

4.文件字节输入流 FileInputStream--读取文件数据

FileInputStream是字节输入流inputStream的子类

FileInputStream的作用:以内存为基准,把磁盘文件中的数据以字节的形式读取到内存中去。

使用

InputStream is = new FileInputStream("文件路径");

方法

read():每次读取一个字节,读取完毕后返回-1;

read(byte[] buffer):每次读取一个数组,没有数组可读返回-1。

当读取中文的时候,可能会出现乱码。这时候该如何解决呢?

解决:定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。

File f=new File("文件路经");
        InputStream is=new FileInputStream(f);

        byte[] buffer=new byte[(int)f.length()];
        int len= is.read(buffer);
        System.out.println("读取了"+len);
        System.out.println("文件大小"+f.length());
        System.out.println(new String(buffer));

在java也提供了相应的方法 ---readAllBytes()

byte[] buffer= is.readAllBytes();
 System.out.println(new String(buffer));
5.文件字节输出流OutPutStream--写数据到文件
public static void main(String[] args) throws Exception {
        OutputStream outputStream =new FileOutputStream("D:\\java\\itheima\\file-io-app\\src\\out01.txt");

        //向新创建的文件中添加数据
        outputStream.write('a');
        outputStream.write(97);
        //outputStream.write('兹');//汉字会出现乱码

        //向文件中添加汉字内容
        byte[] b="加油年轻人".getBytes();
        outputStream.write(b);

        outputStream.flush();//刷新数据,可以继续使用
        outputStream.close();//释放资源,包含刷新数据,close后不能使用

    }

文件输出

6.两种资源释放操作

1.手动释放

try{

可能会出现异常的代码

}

catch(异常类名 变量名  ){

异常执行的操作

}

finally{

执行资源释放操作

}

2.自动释放

自动释放有两种,分别是JDK7和JDK9提供的。

这是JDK7,这种比较常用。

try(定义流对象){

可能会出现异常的代码

}

catch{

异常处理代码

}

JDK9:

定义输入流对象

定义输出流对象

try(输入流对象;输出流对象){

可能会出现异常的代码

}

catch{

异常处理代码

}

7.字符输入流Reader

更方便的读取汉字

Reader re=new FileReader("D:\\java\\itheima\\file-io-app\\src\\data02.txt");

        int code;
        while ((code=re.read()) != -1){//当返回-1的时候不在读取
            System.out.print((char) code);
        }

8.字符输出流Write

向文件中写入数据

Writer re=new FileWriter("目标文件");

    re.write('a');

    re.write("dadadd");

    char[] a="我爱学习".toCharArray();
    re.write(a,0,3);

    re.close();
9.字节流字符流如何选择

字节流适合做一切文件数据的拷贝(音视频,文本)

字节流不适合读取中文内容

字符流适合做文本文件的操作

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

当前标题:java中关于I/O流的介绍-创新互联
网站路径:https://www.cdcxhl.com/article16/dijsgg.html

成都网站建设公司_创新互联,为您提供定制网站商城网站软件开发用户体验面包屑导航网页设计公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设公司