- 浏览: 21533 次
- 性别:
文章分类
最新评论
------- android培训、java培训、期待与您交流! ----------
IO包中的其它对象: 1,随机流-RandomAccessFile(内部封装了字节流) 特点:可以对数据进行读和写的操作。通过构造器的第二个参数模式来区分读写。r/rw。 好处:对于规则的数据可以通过指针的偏移进行随机的数据获取。 方法:seek(),skipBytes(),getFilePointer()。 注意:如果在指定位置写入数据,该位置如果已存在数据,那么会发生局部数据覆盖。 2,管道流-PipedInputStream和PipedOutputStream 特点:读取流和写入流可以进行连接。 连接通过这两个流的构造器,或者通过两个流对象的connect方法。 管道流通常都需要结合多线程进行使用。 3,打印流PrintWriter与PrintStream 字节打印流:PrintStream,System.out对应的类型就是PrintStream。 该类构造器可以接收三种类型的参数: a,File b,String name c,OutputStream 前两者在传递参数时,可以指定字符编码。 后者传递参数时,可以指定是否自动刷新。 字符打印流:PrintWriter。 该类构造函数可以接收四种类型的参数: a,File b,String name c,OutputStream d,Writer 前两者在传递参数时,可以指定字符编码。 后两者传递参数时,可以指定是否自动刷新。 该自动刷新动作,只有在被调用println,printf,format方法时可以使用。 该打印流较为常用。在日后学习Javaweb中,在进行往客户端应答的时候通过response既可以获取PrintWriter对象,通过将html数据打印到客户端,客户端通过浏览器进行数据解析并展现页面效果。 需求:通过打印流操作字符数据,需要编码,同时也需要提高效率。 PrintWriter out = new PrintWrite(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("a.txt"),"UTF-8")));
4,序列流-SequenceInputStream 特点:用来将多个读取流合并成一个流,操作多文件数据较为方便。 它的构造器有两个: 一个可以将两个流合并成一个流。 一个可以将枚举Enumeration中的流对象合并一个流。 通常获取Enumeration是通过Vector的elements方法来完成。但是Vector效率较低,所以改用ArrayList。 代码如下: public void show() { ArrayList<FileInputStream> al = new ArrayList<FileInputStream>(); for(int x=1; x<=3; x++) { al.add(new FileInputStream(x+".txt")); } final Iterator<FileInputStream> it = al.iterator(); Enumeration<FileInputStream> en = new Enumeration() { public boolean hasMoreElements() { return it.hasNext(); } pullic FileInputStream nextElment(){ return it.next(); } }; SequenceInputStream sis = new SequenceInputStream(en); FileOutputStream fos = new FileOutputStream("a.txt"); byte[] buf = new byte[1024]; int len = 0; while((len=sis.read(buf))!=-1) { fos.write(buf,0,len); } os.close(); sis.close(); } 5,操作对象的流-ObjectInputStream与ObjectOutputStream 特点:可以用流直接操作Object,将内存中的对象存储到硬盘上,这个过程称为:对象的本地持久化。 注意:被操作的Object 必须要实现一个标记接口Serializable,该接口中没有方法,该接口用来给类进行UID指定。 可以通过ObjectOutputStream的writeObject方法,来完成对象的持久化。 通过ObjectInputStream的readObject方法,获取存储的对象。 注意:static的变量,非static但被transient关键字所修饰的变量,它们的值不会被持久化。 这两个对象在构造的时候都需要传入一个字节流进行。 6,操作基本数据类型的流-DataInputStream与DataOutputStream 专门用于操作基本数据类型。如:writeInt(),readInt()。 writeUTF(),readUTF(),使用的是utf-8修改版。通过writeUTF()写入的数据,必须通过readUTF()获取。 7,操作字节数组的流-ByteArrayInputStream与ByteArrayOutputStream 这两个流中的子类对象,并没有调用底层资源。所以关闭方法close是无效的。 数据源和数据目的都是内存。 操作字节数组中的元素只要通过指针的偏移即可,为什么还要封装这样两个对象呢? 其实是:通过流的读写思想完成了数组操作。 ByteArrayInputStream bis = new ByteArrayInputStream("abc".getBytes()); ByteArrayOutputStream bos = new ByteArrayOutputStream(); int len = 0; while((len=bis.read())!=-1) { bos.write(len); } String s = bos.toString(); byte[] arr = bos.toByteArray(); bos.writeTo(new FileOutputStream("a.txt")); 操作字符数组CharArrayReader与CharArrayWrite 操作字符串StringReader 与 StringWriter 原理和ByteArrayInputStream ByteArrayOutputStream相同。 --------------------------------------------------------------------------------------------------- 字符编码: ASCII: ISO8859-1. GB2312,GBK。 UTF-8. 在流对文本数据操作,为了方便提供了转换流,转换流中就融入了编码表,默认是GBK. OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt"),"UTF-8"); osw.write("你好"); osw.close(); 将"你好"字符查了UTF-8的码表,并将码表中对应的数字写入到硬盘上。字节数是6。 InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),"gbk"); char[] buf = new char[10]; int len = isr.read(buf); System.out.println(new String(buf,0,len));// 乱码。 isr.close(); 为什么出现乱码呢?读到的数据一共有6个字节,如果是查GBK码表,该码表是一个中文两个字节。 所以读两个字节就查询GBK表,找了一个对应的文件浣,但是并不是和元数据相符。所以称为乱码。 所以要解决该问题。必须将gbk该成UTF-8。
发表评论
-
IO输入与输出
2012-08-13 17:21 0IO/输入输出 File类 它是IO包中唯一代表磁盘文件本身信 ... -
网络编程-总结01
2012-08-12 20:38 731网络模型: OSI参考模型 TCP/IP参考模型 ... -
IO-概念、流细节
2012-08-12 19:55 934流:就是用于读写数据的,在Java程序中,对于数据的输 ... -
黑马程序员-Java基础加强-知识总结
2012-07-30 04:24 1063------- android培训、java ... -
黑马程序员-银行业务调度系统的分析、设计、实现
2012-07-28 20:19 824------- android培训、java培训、期待与 ... -
黑马程序员-交通灯管理系统的分析、设计、实现
2012-07-28 01:49 741------- android培训、java培训、期待与 ... -
黑马程序员-编程基础03-单例设计模式
2012-07-27 17:47 610------- android培训、java培训、期待与 ... -
黑马程序员-编程基础02-小知识点
2012-07-27 17:12 882------- android培训、jav ... -
黑马程序员-编程基础01-进制
2012-07-26 17:19 908------- android培训、java培训、期待与您交流 ... -
黑马程序员-Java开发前奏
2012-07-26 17:10 781------- android培训、java培训、期待与您交流 ... -
IO-1
2012-07-24 18:26 08.File类 1)File类是IO包中唯一代表磁 ... -
IO-2
2012-07-24 18:24 011.字符编码 计算机里只有数字,计算机里的一 ... -
为什么匿名内部类只能访问其所在方法中的final变量
2012-07-24 18:03 0(1).所谓“局部内部类”就是在对象的方法成员内部定义的类。而 ... -
黑马程序员-网络编程-总结02
2012-07-25 00:04 690------- android培训、java培训、期待与 ... -
黑马程序员-GUI
2012-07-25 00:08 668------- android培训、java培训、期待与 ... -
黑马程序员-异常
2012-07-25 00:03 733------- android培训、java培训、期待与 ... -
黑马程序员-&和&&的区别
2012-07-24 14:31 569------- android培训、java培训、期待与 ... -
黑马程序员-将指定目录下的文件复制到指定的目录,并更改扩展名
2012-07-24 14:20 1023------- android培训、java培训、期待与 ... -
黑马程序员-几种常用排序算法
2012-07-24 14:06 598------- android培训、java培训、期待与 ... -
黑马程序员-wait and notify
2012-07-24 13:12 732------- android培训、jav ...
相关推荐
赠送jar包:commons-io-2.11.0.jar; 赠送原API文档:commons-io-2.11.0-javadoc.jar; 赠送源代码:commons-io-2.11.0-sources.jar; 赠送Maven依赖信息文件:commons-io-2.11.0.pom; 包含翻译后的API文档:...
开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2开发工具 commons-io-1.3.2...
黑马程序员_毕向东_Java基础视频教程第18天-14-IO流(拷贝文本文件图例).zip
《t-io百万级网络框架 v3.8.5:打造高效稳定的网络通信》 t-io是一个高性能、轻量级的网络通信框架,专为处理高并发、低延迟的网络应用场景而设计。其v3.8.5版本是该框架的一个重要里程碑,提供了更稳定、更高效的...
java-IO流 commons-io-2.11.0.jar
这个库提供了一系列与输入输出操作相关的实用工具类,极大地简化了Java程序员处理IO任务的复杂性。标题提到的"commons-io-2.4.jar"是这个库的一个版本,版本号为2.4,表明它是官方发布的稳定版本,对先前版本进行了...
8. **对象序列化**:SerializationUtils类提供了序列化和反序列化对象的方法,便于保存和恢复对象状态。 9. **异常处理**:Commons IO提供了许多特定于I/O操作的异常,如InvalidFileNameException、...
Commons IO是apache的一个开源的工具包,封装了IO操作的相关类,包含了最新的commons-io-2.0.1-bin,commons-io-2.0.1-src,commons-io-2.0.1-doc
本资料包“Java-IO流高级-例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar”提供了一个深入学习Java IO流的全面资源,包含实例题目、源代码以及PPT教学材料,适合对Java IO有进阶需求的开发者。 1. **Java ...
在Java编程语言中,IO(Input/Output)流是一组用于数据传输的类,它们允许程序读取和写入数据,无论是从磁盘、网络还是其他输入输出设备。Java的IO流系统是一个强大的工具,它提供了一种统一的方式来处理不同类型的...
Java IO 还包括Filter流,可以用来装饰其他流,添加额外的功能,如缓冲、转换或加密。 二、commons-io-2.5.jar 功能 Apache Commons IO 提供的增强功能包括: 1. 文件操作:`FileUtils` 类提供了大量静态方法,用于...
5. 对象输入/输出:提供了序列化和反序列化的工具,如`ObjectInputStream` 和 `ObjectOutputStream` 的替代品,简化了对象的读写。 6. 编码和解码:支持各种数据编码,如Base64和Hex编码。 7. 字符集检测:`...
Commons IO 是 Apache Software Foundation 开发的一个 Java 库,它的核心组件是 `commons-io-2.6.jar`。这个版本的 JAR 文件包含了丰富的输入/输出流、文件操作、I/O 流工具类以及与文件系统交互的相关功能。下面将...
黑马程序员_毕向东_Java基础视频教程第18天-09-IO流(文件的续写)
除了FileUtils,Apache Commons IO还包含其他类,如IOUtils,提供流操作的工具方法,例如读取或写入流,以及关闭流的便利方法;LineIterator,用于逐行读取文本文件;DirectoryWalker,可以递归遍历目录树,执行...
commons-io-1.4.jar
commons-io-2.11.0.jar
commons-io-1.4里面有很多已经写好的关于io的类,比较便捷
《Apache Commons IO 2.6在Java开发中的应用详解》 Apache Commons IO是Apache软件基金会的一个开源项目,它提供了一系列实用的I/O操作工具,极大地简化了Java开发中与输入/输出相关的任务。其中,`commons-io-2.6....