I/O

流概念

    流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。I/O流提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地。程序的源和目的地可以是键盘、鼠标、内存或显示器窗口等。

输入/输出流

    输入流

    输出流

File类

    File类是java.io包中唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法来操作文件,可以通过调用File勒种的方法,实现创建、删除、重命名文件等操作。File类的对象主要用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件读写权限等。

    1.文件的创建

    2.获取文件信息

     

File类常用方法
方法返回值说明
getName()String获取文件的名称
canRead()boolean获取文件是否为可读的
canWrite()boolean获取文件是否可被写入
exists()boolean判断文件是否存在
length()long获取文件的长度(以字节为单位)
getAbsolutePath()String获取文件的绝对路径
getParent()String获取文件的父路径
isFile()boolean判断文件是否存在
isDirectory()boolean判断文件是否为一个目录
isHidden()boolean判断文件是否为隐藏文件
lastModifiedlong获取文件最后修改时间

文件输入/输出流

    程序运行期间,大部分数据都在内存中进行操作,当程序结束或关闭时,这些数据将消失。如果需要将数据永久保存可使用文件输入/输出流与指定的文件建立连接,将需要的数据永久保存到文件中。

    1.FileInputStream与FileOutputStream类

        分别继承自InputStream类与OutputStream类,提供了基础的文件读取和写入功能。

        虽然Java在程序结束时自动关闭所有打开的流,但是当使用完流后,显式地关闭所有打开的流仍是一个好习惯。一个被打开的流有可能会用尽系统资源,这取决于平台和实现。如果没有将打开的流关闭,当另一个程序试图打开另一个流时,可能会得不到需要的资源。

    2.FileReader和FileWriter类

        FileInputStream与FileOutputStream类都只提供了对字节或者字节数组的读取方法。由于汉字在文件中占用两个字节,如果使用字节流,读取不好可能会出现乱码现象,此时采用字符流Reader或Writer类即可避免这种现象。

        FileReader流顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取源中其余的内容,直到源的末尾或流被关闭。

带缓存的输入/输出流

    缓存是I/O的一种性能优化。缓存流为I/O流增加了内存缓存区。有了缓存区,使得在流上执行skip()、mark()和reset()方法都成为可能。

    1.BufferedInputStream与BufferedOutputStream类

        BufferedInputStream类可以对所有InputStream类进行带缓存区的包装以达到性能的优化。

            有两个构造方法:

                ★BufferedInputStream(InputStream in)

                ★BufferedInputStream(InputStream in, int size)

        第一种形式的构造方法创建了一个带有32个字节的缓存流;第二种形式的构造方法按指定的大小来创建缓存区。

        一个最优的缓存区的大小,取决于它所在的操作系统、可用的内存空间以及机器配置。

        类似的,BufferedOutputStream类也有两个构造方法

            BufferedOutputStream类有一个flush()方法用来将缓存区的数据强制输出完。

            flush()方法就是用于即使在缓存区没有满的情况下,也将缓存区的内容强制写入到外设,习惯上称这个过程为刷新。flush()方法只对使用缓存区的OutputStream类的子类有效。当调用close()方法时,系统在关闭流之前,也会将缓存区中的信息刷新到磁盘文件中。

    2.BufferedReader和BufferedWriter类

        分别继承自Reader类和Writer类。这两个类同样也具有内部缓存机制,并可以以行为单位进行输入/输出。

        BufferedReader类常用的方法:

            read()方法:读取单个字符。

            readLine()方法:读取一个文本行,并将其返回为字符串。若无数据可读,则返回null。

        BufferedWriter类中的方法返回值都为void。常用的方法:

            write(String s,int off,int len)方法:写入字符串的某一部分。

            flush()方法:刷新该流的缓存。

            newLine()方法:写入一个行分隔符。

数据输入/输出流

    数据输入/输出流(DataInputStream类与DataOutputStream类)允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型。

ZIP压缩输入/输出流

    


        

String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值