Java基础之IO流

王朝学院·作者佚名  2016-05-29
窄屏简体版  字體: 小  |  中  |  大  |  超大  

java基础之IO流IO流用来处理设备间数据传输,java对数据的操作是通过流的方式,而这些操作流的对象被封装在IO包中。流可以分为字符流和字节流。字符流可以设置编码方式,这就使得处理文本更加方便。

IO常用基类字节流抽象基类InputStream,OutputStream。字符流抽象基类Reader,Writer。

字符流体系抽象基类Writer共性方法:write();flush();close();append()

子类FileWriter用于写入文件。该类对象一被初始化就要指定被操作的文件。write方法将数据写入流,flush方法刷新流,close刷新并关闭流。

抽象类基类 Reader共性方法:read();skip();reset();ready()

子类FileReader用于读取文件。对象初始化时要指定被读取的文件。read()方法将数据读入流。

IO异常处理IOException

流对象fw要放在try块外面声明,在内部初始化,以便在finally中能访问到;fw只有不为null时才能调用close方法,所以需要有判断。

字符流的缓冲区字符流的缓冲区提高了IO的效率,需要结合流才能使用,在流的基础上对流的功能进行了增强。对应的类为BufferedReader和BufferedWriter。

BufferedWriter将文本写入字符输出流,缓冲各个字符,从而提供单字符,字符数组,字符串的高效写入。所以,在创建缓冲区之前要现有流对象,只要把流对象加入构造函数,再调用缓冲区的写入方法即可。

BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符,数组,行的高效读出。

子类LineNumberReader跟踪行号的缓冲字符输出流,通过setLineNumber和getlLineNumber方法可以设置和获取当前行号。

字节流体系抽象基类OutputStream共性方法:write();flush();close();

子类FileOutputStream用于写入文件。该类对象一被初始化就要指定被操作的文件。write方法将数据写入流,flush方法刷新流,close刷新并关闭流

抽象类基类 InputStream共性方法:read();skip();reset();ready()

子类FileInputStream用于读取文件。对象初始化时要指定被读取的文件。read()方法将数据读入流,available()返回可以读到的字节数。

字节流的缓冲区对应的类为BufferedOutputStream和BufferedInputStream

BufferedOutputStream该类实现缓冲的输出流,通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,不必针对每次字节写入调用底层系统。

BufferedInputStream同字符流缓冲区相同。

读取转换流InputStreamReader类将字节流转换为字符流。它指定字符集来读取字节并解码成字符。为了达到高效率,可以考虑在BufferedReader内包装InputStreamReader。

写入转换流OutputStreamWriter类将字符流转换为字节流。可以指定字符集来编码成字节。为了达到高效率,可以考虑在BufferedWriter内包装OutputStreamWriter。

输入流操作时应明确源----桥梁(符节转换)----缓冲,输出流操作应明确目的------桥梁(符节转换) ------缓冲。

Flie类用来将文件或文件夹封装成对象,方便对文件和文件夹操作,也可以作为参数传递给流的构造函数。

常用方法:

创建 createNewFile();创建新文件,如存在则返回false createTempFile(PRefix,suffix)静态方法,根据指定前缀后缀创建临时文件 mkdir();mkdirs();创建目录 删除 delete();删除文件 deleteOnExit();JVM终止时请求删除此文件或目录。 判断 canExcute();canRead();canWrite();exist();isDirectory();isFile()

获取信息 getname();getPath();getParent();getAbsolutePath();length() list(dir);获取目录下文件名称数组 listFiles(dir);获取文件对象数组

properties类该类是集合中与IO相结合的集合容器,是hashtable的子类,即具备map集合的特点,且键值对都是字符串。该类对象可以用于键值对形式的配置文件。

setProperties(str,str);getProperties(str)读取设置属性 load()加载字节流或者字符流1.6版本后 Set<string> stringPropertyNames()返回属性列表中的键集合

打印流字节输出流PrintStream类作为outputStream的子类,为其他输出流添加了功能,使它们能打印各种数值表示形式。将各种数据都原样打印。可以直接操作文件,它的构造函数接受file对象,文件路径,字节输出流。

字符输出流PrintWriter类它的构造函数可以接受file对象,文件路径,字节输出流outputstream,字符输出流Writer

SequenceInputStream将多个输入流合并成一个输入流。

对象的序列化实现堆内存中数据对象的存取,需要用到ObjectOutputStream和ObjectInputStream类来实现,也称为对象的持久化或对象的序列化。

类通过实现接口serializable来启用它的序列化功能。类中的静态成员变量是不能被序列化的,因为静态成员变量并不在堆内存中存储,而是存储在内存方法区中。非静态成员如果加上transient关键字修饰,则也可以不被序列化。

管道流通过管道流输入和输出可以直接连接,通过结合线程使用,需要用到PipledOutputStream和PipledInputStream类来实现.

管道输入流应该连接到管道输出流;管道输入流提供要写入管道输出流的所有输入字节。通常情况下,数据由某个线程从PipledInputStream对象读取,并由其他线程写入到对应PipledOutputStream对象中去。

随机访问文件RandomaccessFile类的对象能对文件进行随机的读写操作,内部封装了byte数组,通过指针对数组操作。通过getFilePointer()获取指针位置,通过seek改变指针位置。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航