JAVA中的流按照数据流的流向分为输入输出流;按照数据处理的类型不同又分为字节流和字符流。下面就分别来进行说明。
字符流
一:输入流:
java 中使用的字符输入流的基本类为Reader抽象类,通常实现字符输入流功能的都是他的一些子类;
1.1—FileReader
InputStreamReader是字节流通向字符流的桥梁,他使用指定的charset读取字节,并且将它解析成字符。通常我们使用他的子类FileReader来进行字符的读取操作;
上代码!
(1)
FileReader fReader = null;
int c = 0;
try {
fReader = new FileReader(
"C:\\Users\\Administrator\\Desktop\\abc.txt");
while ((c = fReader.read()) != -1)
{
System.out.println((char) c);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
if (fReader != null) {
fReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
分析:
1:因为FileReader对象被try catch包裹,无法做到全局使用,所以在try catch外创建FileReader对象:FileReader fReader = new FileReader(
“C:\Users\Administrator\Desktop\abc.txt”);
注意:内部的参数是要读取的文件的绝对路径。(一定要写文件的后缀名)
2:FileReader的方法read():读取的是文件的单个字符,他将字符转换成了int类型返回出来,所以在输出的时候要使用强制类型转换。当字符读取完后他的返回值是-1。所以在while循环中使用这个方法的返回值来作为循环是否继续的条件。
3:在while循环内部有一个坑: System.out.println((char) c);内部的输出一定不能写fRead