【Java基础专题】IO与文件读写 Java的IO流架构
【一】基于字节的输入流
值得注意的地方有:
①Level 2的输入流,大多数都会指明数据源的形式:例如ByteArray,File,Piped
②Level 3的输入流,则不会出现具体的数据源名字,而是以功能取代:例如Buffered,LineNumber
所以说Level 3的输入流是对Level 2输入流的“封装和过滤”。实际上Level 2的输入流,都继承于一个叫做:FilterInputStream的输入流。
下面是对各个input stream的简介:
①ByteArrayInputStream
从内存中每次读取一个字节的数据,然后保存到内置的缓冲区中。维持一个计数器用来记录从数据源中读入的字节数目。
调用该输入流的close()方法不会产生任何实际的作用。因为它“关闭”的对象是---内存。而不是文件。不会抛出任何的IOException。
②FileInputStream
从文件系统中读取原始的字节数据(raw bytes)。每次读取一个字节
③PipedInputStream
管道输入流,通常它的一端会和数据源连接,另一端和管道输出流(PipedOutputStream) 连接。这样从管输入流读入的任何数据将直接地传输到管道输出流。
通常会有一个独的线程从管道输入流中读取数据,再交给另外一个线程,由另外的线程向管道输出流中写数据。如果使用单个线程进行读写操作,很容易造成资源的死锁。
④SequenceInputStream
把多个输入流按顺序合并成一个输入流
⑤DataInputStream
从底层的其它字节输入流中读取字节,然后转换成与机器无关的原始类型数据(boolean,byte,char)
⑥BufferedInputStream
为底层的其它字节输入流增加一个“缓冲”的功能,除此之外还可以“标记”,“重置”输入流。当这个输出流的对象被创建时,一个内置的缓冲区也就被创建了。
随着底层的输入流的不断读入,缓冲区中的数据也在不同刷新。一次性地从底层的输入流读入多个字节,方便后续的转码工作
【二】基于字节的输出流
值得注意的是:
①在Level 2的输出流,都是以功能来命名的。例如:Print,DataOutput,Buffered
②在Level 3的输出流,则多数都是以数据源的形式来命名的。例如:ByteArray,File,Piped
所以说Level 2的输出流必须依赖于Level 3的输出流,实际上Level 2的输出流,都继承与一个叫做FilterOutputStream的输出流
下面是对各个output stream的简介:
①PrintStream
为底层的输出流添加额外的功能,令到底层的输出流可以方便地输出各种经过“格式化”的数据。和其它输出流不同,该输出流
相关文档:
最近公司碰到需要用图表的形式显示一些数据,我就开始到网上查询,查到了jfreechart和amcharts,这两者我都实现过了,jfreechart最后生成图片,但是图片效果不是我想要的,然后又研究amcharts 它的效果确实很好,而且官方网站上还有好些例子可供下载,网址是:www.amcharts.com
(想要完成一个amcharts图形需要swfobjects. ......
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。
一、Java编程入门类
对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这 ......
Java内存分配:
1. 寄存器:我们在程序中无法控制
2. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中
3.
堆:存放用new产生的数据
4. 静态域:存放在对象中用static定义的静态成员
5. 常量池:存放常量
6. 非RAM(随机存取存储器)存储:硬盘等永久存储空间
------------------------- ......
1、面向对象的特征有哪些方面
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重 ......
Heritrix网络爬虫对BDB嵌入式数据库的应用(JAVA)
一、Heritrix中和BDB相关的类
org.archive.bdb.BdbModule 用来映射一个共享的BDB数据库环境(JE)的通用模型。
org.archive.bdb.BdbModule.BdbConfig 数据库配置对象。必需的,因为com.sleepycat.je.DatabaseConfig这个对象是不会被序列化的。此外它还可以防止无效设置 ......