java的I/O流--个人总结(上)
作者:xpmars 标签:java | 阅读次数:10 |
![]() ![]() ![]() |
| ![]() ![]() ![]() |
怎么又回过头来看I/O流操作呢?温故知新嘛,况且以后我的研究方向都会涉及带内存和多线程的操作,I/O与这些太有关联了!其实我写这个的个人总结的初衷并不是这样,是在学习Struts2的文件上传和下载操作时遇到了一些小问题。 一下是我的个人总结: java.io.包内的类真是太多了,简直是排山倒海!但是其中许多类都是装饰类,采用的装饰着模式。所以我们一定要熟悉各种类之间的层次结构!
构造方法:public File(String pathname) 创建文件对象的方法: f对象.createNewFile() 其返回值是一个boolean值 还有其他一些常用方法 :f.delete() , f.mkdir().............. 其中全局常量pathSeparator的路径分隔符,显示了java的可移植性强大的特点
2. RandomAccessFile类 对文件内容进行操作的随机读取类 构造方法: public RandomAcessFile(文件对象 模式) 会抛出异常
3. 字节流 字节流有OutputStream和InPutStream,但是他们都是抽象类,必须通过子类开实例化对象,然后对byte数组进行操作。如实操作文件,可以使用其子类FileOutPutStream类,通过向上转型,可以为OutPutStream实例化。 方法有:OutPutStream的对象.write(byte[]|b单个字节)写入到输出流中去;InputStream的方法和OutPutStream是一样的对象.read( |byte[])将对象InputStream流中的数据读进数组,或者返回一个int值是否读完。要强调的是最后都要close()关闭字节流! 4. 字符流 1个字符是2字节是2Byte 其单位是大于字节流的字符输出流Writer和字符输入流Reader,他们的操作基本和字节流类似的 但是区别是:字节流操作不会使用到缓冲区(内存),而字符流操作需要使用!
5. 转换流 OutputStreamWrite(Writer的子类):xxxx---->字符流---->字节流 InputStreamReader(Reader的子类):文件---->字节流---->字符流
6. 内存操作流 以上讲解的程序中的输出和输入都是从文件中来的,当然也可以将输入的位置设置在内存上 使用ByteArrayStreamInputStream,ByteArrayOutPutStream完成输入输出。和字节流字符流一样,操作对象都可以看成是Stream流。 构造方法ByteArrayInputStream(byte[] buf)只使用构造方法将内容读取到内存中去 构造方法ByteArrayOutPutStream()创建对象,将内容写入bos流中:bos.write(int b) bos.write(bis.read()):以bis读出再写入bos中。然后str=bos.toString
7. 管道流 PipedOutputStream和PipeIntputStream使用时,还要使用Connect()方法将两个流连接起来。 pos.connect(pis);
|