IO流的分类:
根据处理数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流
本次介绍的就是字节流
IO流我个人理解为水从一个容器流入另一个容器,InputStream流是一个容器的数据流入显示的容器,也就是控制台或者用户界面;OutputStream流是将用户从控制台或用户界面输入的数据流向另一个储存容器
在我的另一篇博客里讲述了File文件类的使用,IO流的处理便需要用到File类。
首先,我们实例化一个File类,获取文件的路径
File file1 = new File("e:/Lenovo/aaa.txt");
接着创建一个InputStream流读取该文件的内容,代码的最后记得关闭流close()
try {
FileInputStream fi = new FileInputStream(file1);
int c=fi.read(); //读取文件内容的方法
while(c>-1){
System.out.print((char)c);
c=fi.read(); //当aaa.txt读取完毕时返回值为-1
}
fi.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
需要注意的是,使用该方法获取的文件内容为ASSIC码,需要转换成char类型才能正常显示,同时也意味着该方法不能读取汉字,因为汉字使用的是双字节编码方式(Unicode——国际统一编码)。
我们执行一遍代码
可以看到,文件里的内容已经显示出来了。
既然已经知道了读取数据,那么怎么写入数据呢,这时候我们就需要用到OutputStream流了
同样,先实例化File类,同时我们定义一个字符串,并将其分解进byte数组里
File file2 = new File("e:/Lenovo/aaa.txt");
String s="Hello China";
byte[] b=s.getBytes();
然后调用write()方法将其写入
try {
FileOutputStream fo = new FileOutputStream(file2);
fo.write(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
执行完毕后可以看到
之前定义的字符串已经成功写入aaa文件中了。