IO流基础

1.IO是什么?

迄今位置我们的程序都是一直在自己和自己完,而IO流就可以打开内存,使我们开启了与计算机内存之间的交互,首先要知道IO流是指的什么?

IO流故名思意,它引用了Input与Output两个单词的首写字母分别代表着输入与输出

而输入与输出是任何编程语言非常核心的一项功能,程序运行需要数据,数据的获取需要和外部系统进行通信,而外部系统可能是数据库,文件,IO设备,网络,其他的程序,等等而java中的IO技术屏蔽了外部的所有差异,而我们只需要知道各种流对象如何去使用就可以了不用去关心外部到底是什么设备。

数据源的概念

数据源(data sorce):用来提供数据的原始媒介,常见的数据源有:数据库,文件,其他程序,内存网络链接,IO设备,等等.

数据源同时又分为源设备与目标设备。

  • 源设备:为程序提供数据,一般对于的为输入流
  • 目标设备:程序数据的目的地,一般对应输出流

流的概念 

流(Stream):它是一个抽象的动态的概念,是一串连续动态的数据集合。对于流而言,数据源就像水箱,流(Stream)就像水管中流动着的水流,程序就是我们最终的目的地.

我们通过流(Stream)将数据源(Source)中的数据(information)输出到程序(Program)中.

对于输出流而言,目标数据源就是目的地(dest)我们通过流将程序中的数据输送到数据源中.

 第一个IO程序

 既然知道了Io程序的基本概念就可将进行操作了,在java.io包中提供了这样一个类FileInputStream   该类可以从文件获取资源,如:

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

public class TestFileInputStream {
    public static void main(String[] args) throws IOException {//抛出可能找不到文件异常
        //创建类
        FileInputStream fileInputStream = new FileInputStream("D:\\TangMingYong.txt");//传入磁盘文件地址
        try {
            int read = fileInputStream.read();//读取一个字符的Ascll码,如果没有没有内容了则返回-1
            System.out.println((char) read);
        } finally {
            if (fileInputStream != null) {
                //每个IO流对象用完必须完毕,不然会耗费很大的资源
                fileInputStream.close();
            }
        }
    }

    //将他们包装为一个方法读取全部的文件,将内容返回为字符串
    public static String AllRead(FileInputStream fileInputStream) throws IOException {
        int len;
        StringBuilder stringBuilder = new StringBuilder();
        while ((len = (fileInputStream.read())) != -1) {
            stringBuilder.append((char) len);
        }
        return stringBuilder.toString();
    }
}

 同理,既然我们可以向文件中读取资源也可以写入资源,java.io包中提供了FileOutputStream类使我们向文本输出资源,如:

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

public class TestFileOutStream {
    public static void main(String[] args) throws IOException {
        new TestFileOutStream().OutFile("D:\\TangMingYong.txt","abc");
    }

    //包装为方法向文件输出内容如:
    public void OutFile(String File,String Text) throws IOException {
        FileOutputStream fileOutputStream =null;
        try {
            fileOutputStream=new FileOutputStream(File);
            char[] chars = Text.toCharArray();
            for (int i = 0; i < chars.length; i++) {
                //这里的输出只支持英文!
                fileOutputStream.write(chars[i]);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if (fileOutputStream!=null){
                fileOutputStream.close();
            }
        }
    }
}

新语法try-with-resource

try-with-resource使JDK7新出的语法:

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

public class Test {
    public static void main(String[] args) {
        //使用try-with-resource语法糖,处理try它会自动帮我们进行try(关闭着里面的资源),注意:这是编译器所进行的功能!
        try (FileOutputStream out= new FileOutputStream("D:\\TangMingYong.txt");){
            out.write('你');
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.java中流概念的细分

按流的方向分类:

  • 输入流:数据流向是数据源到程序(以InputStream,Reader结尾的流)。
  • 输出流:数据流向程序到目的地(以OutPutStream,Writer结尾的流)。

按处理数据单位分类:

  • 字节流:以字节为单位获取数据,命名上以Stream结尾的流一般是字节流,如:FileInputStream,FileOutStream
  • 字符流:以字符为单位获取数据,命名上以Reader/Writer结尾的流一般是字符流,如:FileReader,FileWriter

按处理对象不同分类:

  • 节点流:可以直接从数据源或目的地读写如:FileInputStream.FileReader,DataInputStream等.
  • 处理流:不直接链接到数据源或目的地,'处理流的流',通过对其他流的处理来提高程序的性能,如:BufferedInputStream,BufferedReader等

正在更新中....

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123小步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值