【JAVA开发之IO流1-1】IO流简介及输入流和输出流

时间:2023-01-26 04:51:43

I/O流(input/output),简称流,是一种特殊的类。

其中按功能可以分为输入流、输出流:

输入流:程序读取数据源到内存。数据源为外界(硬盘、网络、键盘输入),即是将外部数据读入到程序内存的通道。

输出流,程序将内存中的数据输出到外界,比如储存到硬盘、上传到网络等,即是将内存中的数据输出到外界。


下面我们写2个控制台小程序理解一下I/O流的概念,

第一个程序,用Scanner将用户输入的字符串接收,并用输出流保存到电脑硬盘中。

第二个程序,用输入流读取刚刚保存的文件,并打印到控制台。


第一个程序:运行成功可进入相应目录查看写入的文件

import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class OutPut {
public static void main(String[] args){
//接收用户输入的数据
Scanner in=new Scanner(System.in);
String str=in.next();
try {
//选择需要输出文件的位置,不存在会新建,如果路径错误、空间不够会抛出异常,必须用try捕获异常
FileWriter fw=new FileWriter("D:/data.txt");
fw.write(str);//写入数据到内存缓冲区
fw.flush(); //刷新缓冲区,写入文件
fw.close(); //关闭流,释放缓冲区资源
System.out.println("写入成功!");//打印此条log,说明写入成功,可以到路径下查看该txt文件
} catch (IOException e) {
System.out.println("写入失败,可能是路径错误,或者硬盘空间不足"); //如果出现路径错误,会捕获到异常
}
}
}



第二个程序:

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

public class InPut {
public static void main(String[] args){
try {
FileReader fr=new FileReader("D:/data.txt");//new出一个输入流
int aa=fr.read();//读取第一个字符的ASCII值
char bb= (char) aa;//将ASCII值转换为单字符
String str= String.valueOf(bb);//将char整合为String
while (aa!=-1){//继续读取,直到ASCII值为-1,即读取到文件尾。
aa=fr.read();
bb= (char) aa;
str=str+bb;//将一个一个字符合并为字符串 当ASCII值读取到-1的时候,就读完了,停止读取
}
fr.close();//关闭这个输入流,节约资源占用
System.out.println("读取成功,文件内容为\n"+str);
} catch (IOException e) {
System.out.println("读取失败,可能为路径错误,或者文件不存在");//同理要捕获异常
}
}
}