皮皮潇最近学到了IO流但是感觉这一块要记的东西太多了,所以重API上查阅并总结了以下几点关于IO的知识。
1.File(文件类):
File类是文件以及文件夹进行封装的对象,用对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息的方法。
File
类的实例是不可变的;也就是说,一旦创建,File
对象表示的抽象路径名将永不改变。
File
类的主要方法有:
canExecute()文件是否可执行,canRead()文件是否可读,canwrite()文件是否可编辑。
createTempFile(String prefix, String suffix)
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
delete()
删除此抽象路径名表示的文件或目录。
exists()
测试此抽象路径名表示的文件或目录是否存在。
isDirectory()
测试此抽象路径名表示的文件是否是一个目录。
isFile()
测试此抽象路径名表示的文件是否是一个标准文件。
length()
返回由此抽象路径名表示的文件的长度。
toString()
返回此抽象路径名的路径名字符串。
2.RandomAccessFile(随机存取文件类):
此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException
(是一种 IOException
)。如果由于某些原因无法读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出 IOException
,而不是 EOFException
。需要特别指出的是,如果流已被关闭,则可能抛出 IOException
。
3.IO流的分类
①根据处理数据类型不同分为:字符流和字节流。
字节流与字符流的区别:
1.字节流以字节为单位。字符流以字符为单位,一次可读取多个字节。
2.字节流能处理所有类型的数据,而字符流只能处理字符类型的数据
②根据数据流向不同分为:输入流和输出流。
输入流与输出流的区别:
输入流只能进行读操作,而输出流只能进行写操作。
4.自己参照API画的字符流与字节流的思维导图
字符流:
Reader 是所有的输入字符流的父类,它是一个抽象类。
CharReader、StringReader 是两种基本的介质流,它们分别将Char 数组、String中读取数据。PipedReader 是从与其它线程共用的管道中读取数据。BufferedReader 是一个装饰器,它和其子类负责装饰其它Reader 对象。FilterReader 是所有自定义具体装饰流的父类,其子类PushbackReader 对Reader 对象进行装饰,会增加一个行号InputStreamReader 是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。FileReader 可以说是一个达到此功能、常用的工具类,在其源代码中明显使用了将FileInputStream 转变为Reader 的方法。我们可以从这个类中得到一定的技巧。Reader 中各个类的用途和使用方法基本和InputStream 中的类使用一致。后面会有Reader 与InputStream 的对应关系。(查阅百度)
主要的方法:
read() 读取一个字符;
close()关闭流对象;
Writer 是所有的输出字符流的父类,它是一个抽象类。
CharArrayWriter、StringWriter 是两种基本的介质流,它们分别向Char 数组、String 中写入数据。PipedWriter 是向与其它线程共用的管道中写入数据,BufferedWriter 是一个装饰器为Writer 提供缓冲功能。PrintWriter 和PrintStream 极其类似,功能和使用也非常相似。OutputStreamWriter 是OutputStream 到Writer 转换的桥梁,它的子类FileWriter 其实就是一个实现此功能的具体类(具体可以研究一SourceCode)。功能和使用和OutputStream 极其类似,后面会有它们的对应图。(查阅百度)
主要的方法是:
append() 向输出流中追加数据
close() 关闭输出流
write() 将数据写入到输输出流中。
字节流:
InputStream 是所有的输入字节流的父类,它是一个抽象类。
ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它们分别从Byte 数组、StringBuffer、和本地文件中读取数据。PipedInputStream 是从与其它线程共用的管道中读取数据。ObjectInputStream 和所有FilterInputStream 的子类都是装饰流(装饰器模式的主角)。(参考百度)
常用方法:
available() 获取输入流的大小。
close();关闭输入流。
read();读取输入流 。
OutputStream 是所有的输出字节流的父类,它是一个抽象类。
ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、和本地文件中写入数据。PipedOutputStream 是向与其它线程共用的管道中写入数据,ObjectOutputStream 和所有FilterOutputStream 的子类都是装饰流。(查阅百度)
常用方法:
close(); 关闭此输出流并释放与此流有关的所有系统资源。
flush();刷新此输出流并强制写出所有缓冲的输出字节。
write(byte[] b) 将 b.length 个字节从指定的 byte 数组写入此输出流。
http://www.zhiliaotang.com 请关注知了堂,在这里将会有更多皮实学习伙伴一起进步,共同开心.。