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流的介绍-创新互联
地址分享:http://scyanting.com/article/dijsgg.html