1.c://test//Test.java 从盘符开始找 ? 2.从项目根目录开始找 ?
1.当前编辑文件的路径相对于你要找到文件的路径
输入流:从数据源读取数据到程序中。只能从中读取数据,而不能向其写入数据
输出流:将数据从程序写入数据目的地。只能从中写入数据,而不能从中读取数据
字节流是以 byte 为最小单位进行数据传送。io 包中的字节流都继承自抽象类 InputStream 或 OutputStream
读取一个字节,并且以整数的形式返回(0-255) ? 如果返回-1,表示读取到输入流的末尾 ?
字符流是以 char 为最小单位进行数据传送。io 包中的字符流都继承自抽象类
Reader 或者 Writer。
读取的是一系列字节,并且存储到一个byte类型的数组中,这个数组相当于一个缓存区 ? 返回的是当前读取到的字节数,如果读取到文件末尾返回-1 ?
节点流:可以从或向一个特定的地方(节点)读写数据
过滤流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写
转换流提供了在字节流和字符流之间的转换
Java API提供了两个转换流:
字节流中的数据都是字符时,转成字符流操作更高效。
InputStreamReader:
用于将字节流中读取到的字节按指定字符集解码成字符。需要和InputStream“套接”。
构造方法
public InputStreamReader(InputStream in)
public InputSreamReader(InputStream in,String charsetName)
如: //指定字符集
Reader isr = new InputStreamReader(System.in,”ISO5334_1”);
OutputStreamWriter
用于将要写入到字节流中的字符按指定字符集编码成字节。需要和OutputStream“套接”。
构造方法
public OutputStreamWriter(OutputStream out);
public OutputSreamWriter(OutputStream out,String charsetName);
ObjectInputStream和OjbectOutputSteam;用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来
为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组。
缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。
对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush()将会使内存中的数据立刻写出。
根据数据操作单位可以把缓冲流分为
BufferedInputStream | BufferedReader |
---|---|
BufferedOutputStream | BufferedWriter |
原文:https://www.cnblogs.com/zzc622446/p/12046105.html