IO流的分类
根据数据流的流向可分为输入流和输出流
输入流 :把数据从磁盘 上读取到 内存 中的流。
输出流 :把数据从 内存 中写出到 磁盘上的流
格局数据的类型分为:字节流和字符流。
字节流 :以字节为单位,读写数据的流。
字符流 :以字符为单位,读写数据的流。
字节输入流 InputStream 字节输出流 OutputStream
字符输入流 Reader 字符输出流 Writer
流各类之间的关系图:

常用的字节流中的类:
java.io.FileOutputStream 类是文件输出流,用于将数据从内存中写出到文件(磁盘)。
public class FileOutputStreamConstructor throws IOException {
public static void main(String[] args) {
// 使用File对象创建流对象
File file = new File("a.txt");
FileOutputStream fos = new FileOutputStream(file);
// 使用文件名称创建流对象
FileOutputStream fos1 = new FileOutputStream("b.txt");
//定义一个字节数组,将字符串转换为字节数组
byte[] b = "abcde".getBytes();
//写入数据
fos.write(97);
fos1.write(b);
//关闭资源
fos.close();
fos1.close();
}
}
java.io.FileInputStream 类是文件输入流,从文件中读取字节到内存中。 它们都有两个类型的参数 File 和 String
public class FISRead {
public static void main(String[] args) throws IOException{
// 使用文件名称创建流对象.
FileInputStream fis = new FileInputStream("read.txt");
// 文件中为abcde // 定义变量,作为有效个数 int len ;
// 定义字节数组,作为装字节数据的容器
byte[] b = new byte[2];
// 循环读取
while (( len= fis.read(b))!=‐1) {
// 每次读取后,把数组变成字符串打印
System.out.println(new String(b));
}
// 关闭资源
fis.close();
}
}
常用的字符流中的类:
java.io.FileReader 类是读取字符文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。
public class ReaderDemo {
public static void main(String[] args) throws IOException {
// 使用文件名称创建流对象
FileReader fr = new FileReader("read.txt");
// 定义变量,保存数据
int b;
// 循环读取
while ((b = fr. read())!=-1) {
System.out.println((char)b);
}
/*
//使用字符数组
int len;
char[] cbuf = new char[1024];
while ((len = fr.read(cbuf))!=-1) {
System.out.println(new String(cbuf));
}
*/
// 关闭资源
fr.close();
}
}
java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。
public class ReaderDemo {
public static void main(String[] args) {
FileWriter fw=null;
try {
fw = new FileWriter("demo.text");
fw.write('a');
fw.write(97);
fw.flush();
fw.write("你好");
} catch (IOException e) {
e.printStackTrace();
}finally {
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中。但是关闭的流对象,是无法继续写出数据的。如果我们既想写出数据,又想继续使用流,就需要 flush 方法了。
flush :刷新缓冲区,流对象可以继续使用。
close :先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。

802

被折叠的 条评论
为什么被折叠?



