1、字节流和字符流
2、输入流和输出流
(1) 输入流:reader和inputstream
字符输入流reader:
a. BufferedReader:
BufferedWriter bufw=new BufferedWriter(new FileWriter("buf.txt"));
b. InputStreamReader (字节到字符的桥梁):即可以把InputStream转换为Reader,把OutputStream转换为Writer
字节输入流inputstream:
a. FileInputStream(File file):通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
b. ObjectInputStream:能够让你从输入流中读取Java对象,而不需要每次读取一个字节
private ObjectInputStream ois;
Object readObject = ois.readObject();
c. FilterInputStream,它又包括:
BufferedInputStream:内部有一个缓冲区,默认大小为8M,每次调用read方法的时候,它首先尝试从缓冲区里读取数据,若读取失败(缓冲区无可读数据),则选择从物理数据源(譬如文件)读取新数据(这里会尝试尽可能读取多的字节)放入到缓冲区中。详情点击打开链接
public BufferedInputStream serverFileBis;
serverFileBis = new BufferedInputStream(socket.getInputStream());
int readLength = serverFileBis.read(bys);
DataInputStream:允许应用程序以与机器无关方式从底层输入流中读取基本Java 数据类型
PushbackInputStream :
(2)输出流:writer和outputstream
字符输入流writer:
a. BufferedWriter:
BufferedReader bufr=new BufferedReader(new FileReader("buf.txt"));
b. OutputStreamReader (字节到字符的桥梁):
private ObjectOutputStream oos;
private TranObject object;
oos.writeObject(object);
oos.flush();
字节输入流inputstream:
a. FileOutputStream(File file):创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
b. ObjectOutputStream:能够让你把对象写入到输出流中
c. FilterOutputStream,它又包括:
BufferedOutputStream:数据成员buf也是一个位数组,默认为512字节。当使用write()方法写入数据时实际上会先将数据写到buf中,当buf已满时才会实现给定的OutputStream对象的write()方法,将buf数据写到目的地,而不是每次都对目的地作写入的动作。
public BufferedOutputStream serverFileBos;
serverFileBos = new BufferedOutputStream(socket.getOutputStream());
DataOutputStream:程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数据
PrintStream:
注意事项:
FileInputStream 和FileOutputStream适用于操作于任何形式的文件
flush()迫使数据未满的缓冲区输出数据
/记住,只要一读取键盘录入,就用这句话。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));