1.\
和/及pathSeparator与separator
\
是在Windows下的文件分割符,在java中\表示转义,文件分隔符为\\
/
非Windows下的文件分割符如Linux,推荐使用的格式,在其他情况下也可以使用
pathSeparator
与系统有关的路径符分割符,相当于“;”,可以跨平台使用
separator
与系统有关的默认文件分割符,相当于java中的“\\”,可以跨平台使用
2. 字节流和字符流
字节流可以处理任何文件,字符流一般用于处理文本文件
3. 字符流存在的原因
每个国家的字符不一样,所以涉及到字符编码问题,为了获取正确的数据,所以需要添加指定的编码集继续解析,所以就存在了字符流。
4. 文件被破坏的原因
字节数不够或者字节码乱码
5. 常用的输入输出流及转换流等
1》输入流
FileInputStream:从文件系统中的某个文件中获得输入字节
BufferedInputStream:该类实现缓冲的输入流,提高效率,所以一般都会对FileInputStream进行相应的包装
FileReader读取字符流;
BufferedReader:该类实现缓冲的字符输入流,提高效率,所以一般都会对FileReader进行相应的包装,采用了装饰模式(放大器)
PrintStream:system.out及system.err的返回类型,可以输入至文件,也可以显示到控制台,system中也有相应的方法。
DatainputStream:写入和读出顺序续需要保持一致,否则可能会乱码,readUTF
()
以utf-8
的形式读出字符,没有找到相应内容,输出
EOFException异常
ObjectInputStream:非序列化的写出为初始化默认值,文本里面的内容还是看不懂的
ByteArrayInputStream:保存在内存中,后续可写入文件,这个流的空间不宜过大,否则内存会卡
2》输出流
FileReader ,BufferedWriter,FileOutputStream,BufferedOutputStream,PrintWriter ,
ObjectOutputStream
DataOutputStream:writeUTF
(String str)
以utf-8
的形式写
入
字符,文本的内容是给电脑看的,我们看不懂
ObjectOutputStream:先序列化,后反序列化,不是所有的都能序列化,需要实现Serializable接口,在Serializable接口中不需要序列化属性前加transient;
转换流
3》转换流
InputStreamReader:是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。
OutputStreamWriter:是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节
4》其他
RandomAccessFile:String mode模式有r只读,rw读和写等,里面有一个Seek方法可以指定从某处开始读取;其他方法和字节流类似,seek的字节数需要与对应编码集一致
SequenceInputStream:SequenceInputStream(Enumeration<? extends InputStream> e),按迭代器的顺序依次输入InputStream的子类;