io输入流输出流

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。

一,io流的概述和分类

io流介绍:

io:输入和输出(input/output)

流:是一种抽象的概念,是对数据传输的总称,也就是说数据在设备之间传输的现象称之为流,流的本质就是数据传输。

io流就是解决设备间传输的问题,比如文件上传,文件下载。

IO流的分类:
按照数据的流向
   输入流:读数据
   输出流:写数据
按照数据类型来分
字节流
   字节输入流
   字节输出流
字符流
   字符输入流
   字符输出流
二,下面将要使用的是两个重要的流是 FileInputStream 和 FileOutputStream(字节输出流:创建文件输出流以指定的名称String name写入文件)。

1.字节流抽象基类

inputStream:这个抽象类是表示字节输入流的所有类的超类;

OutputStream:这个抽象类表示字节输出流的所有类的超类;

字节输出流如何具体写入数据:

package Text01;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Test9 {
    public static void main(String[] args) throws IOException {
//        创建文件输出流
//        如若文件不存在,则创建这个文件。如若文件存在,文件会清空里面数据
//        1.创建文件输出流以指定的名字写入文件中
        FileOutputStream fos = new FileOutputStream("D:\\AAXaple\\aa");
//        2.将指定的字节写入文件中
        fos.write(00);
//        3.最后一步释放资源就好了
        fos.close();
    }
}

 2.FileInputStream类

 FileInputStream流主要用于读取数据,它的对象可以使用关键字new来创建,也可以使用多种构造方法来创建对象。

package Text01;

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

public class Test10 {
    public static void main(String[] args) throws FileNotFoundException {
//        1.使用字符串类型的文件名来创建一个输入流对象来读取文件:
        InputStream file = new FileInputStream("D:/AAXaple/hello word");
//        2.可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象
        File f0 = new File("D:/AAXaple/hello word");
        InputStream ips = new FileInputStream(f0);
    }
}

3.创建InputStream对象,就可以使用多种的方法来读取流或者进行其他的流操作。

以下是方法及其概述

 写数据方法分类:

方法名
void  write(int b)     // 将指定的字节写入文件输出流 一次写一个字节

void  write (byte[] b)   // 将b.length字节从指定的字节数组写入文件输出流

void  write (byte[] b,int off,int len)   //将len字节从指定的字节数组开始,从偏移量off开始写入文件输出流 一次写一个字节数据的部分数据

方法:

package Text01;

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

public class Test11 {
    public static void main(String[] args) throws IOException {
//        1.使用字符串类型的文件名来创建一个输入流对象来读取文件:
        InputStream file = new FileInputStream("AAXaple\\a.txt");
//        2.将指定的字节写入文件中
//      void  write(int b);
//        file.write(00);
//        file.write(11);
//        file.write(22);
//        2.从输入流读取b.length长度的字节。返回读取的字节数。如果是文件结尾则返回-1
//        void write(byte[] b);
        byte[] bys = {01,02,03,04,05,06};
//        3.返回字符串对应的字节
//        byte[] getBytes();
          byte[] bys = "abcdes".getBytes();
          file.write(bys);
//        4.释放资源
        file.close();
    }
}

4.FileOutputStream类

该类用来创建一个文件并向文件中写数据。

如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。

有两个构造方法可以用来创建 FileOutputStream 对象。

使用字符串类型的文件名来创建一个输出流对象:

package Text01;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class Test12 {
    public static void main(String[] args) throws Exception {
//        1.使用字符串类型的文件名来创建一个输出流对象:
        OutputStream f1 = new FileOutputStream("c:/java/hello word");
//        2.使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:
        File f2 = new File("c:/java/hello word");
        OutputStream fOs = new FileOutputStream(f2);
    }
}

创建OutputStream 对象,就可以使用多种的方法来读取流或者进行其他的流操作。

以下是方法及其概述

 三,实现io流复制文件

package Text01;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class Test13 {
    public static void main(String[] args) throws Exception {
//      1.根据数据源创建字节输入流对象
        FileInputStream fis = new FileInputStream("D:/t.txt");
//      2.根据目的地数据源创建字节输出流对象    
        FileOutputStream fos = new FileOutputStream("D/p.txt");
//      3.读写数据,复制文本
        int by;
        while ((by= fis.read())!=-1){
            fos.write(by);
        }
//      4.释放资源
        fos.close();
        fis.close();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值