学习Java的笔记(5)

笔记

 
121、Stream根据功能可分为数据侦听器流(data Sink Stream,侦听器:内存、管道、文件)和进程流

(Processing Stream)
122、在谈Java的流类之前,先谈如何生成一个File对象,它时一个和流无关的类。File对象可用来生成

和文件(及其所在的路径)或目录结构相关的对象,由于不同的系统可能会有不同的目录结果表示法,使

用File可完成和系统无关的目的(使用抽象的路径表示法)。
123、File对象生成方法:
 File(String path):将一个代表路径的字符串转换为抽象的路径表示法
 File(String parent,String child):parent代表目录,child代表文件,child不可为空
 File(File parent,String child):parent代表一个File对象的目录,child代表文件,child不

可为空
124、File提供一些方法来测试或检查一个File对象:
 boolean exists():若该文件或目录存在,则返回true
 boolean isDirectory():若为目录则返回true
 File[] listFiles():得到该对象所代表的目录下的File对象数组,若不为该目录,则返回null
 String[] list():同上,但返回一个String数组
 long length():得到和该对象相关的文件的大小,若不存在,则返回值为0L
 String toString():得到抽象路径表示法
 String getParent():得到抽象路径表示法的目录部分(不包含最后一个部分)
 String getName():得到抽象路径表示法的最后一个部分
125、改变一个File对象的方法:
 boolean renameTo(File newName):将目前File对象所代表的路径名改为newName所代表的路径名

。若更改成功,则返回值为true
 boolean mkdir():生成一个新的目录。入成功,则返回值为true
 boolean mkdirs():生成一个新的目录,包含不存在的子目录。若成功,返回值为true
 boolean delete():删除目前File对象所代表的文件或目录,若是目录,则需为空的。若成功,

返回true
126、没有参数的listFiles()会列出所有的文件名。使用File[] listFiles(FilenameFilter filter)过

滤某些特殊的扩展名或包含某些字符的文件名。FilenameFilter是一个接口,必须生成一个实现它的类来

负责过滤文件名,该类需取代FilenameFilter惟一的方法accept()。boolean accept(File dir,String

name),若返回为true则会将目前检查的文件包含在listFiles()的返回数组内。
127、字节流的构造函数:
 FileInputStream(String name):打开文件name用以读取数据
 FileInputStream(File file):打开和File对象file相关联的文件,用以读取数据
 FileOutputStream(String name):打开文件name用以写入数据
 FileOutputStream(File file):打开和File对象file相关联的文件,用以写入数据
 FileOutputStream(String name,boolean append):打开文件name用以写入数据,若append为

true,则写入的数据会加到原有的文件后。
128、字节数组(byte array)的构造函数:
 ByteArrayInputStream(byte[] buffer):生成一个字节数组的输入流,并指定一个字节数组

buffer为此输入流的流缓冲区。
 ByteArrayOutputStream():生成一个字节数组的输出流,其缓冲区的默认初始大小为32字节,若

有需要,缓冲区的大小会随之增加
 ByteArrayOutputStream(int size):同上,但分配size字节的初始大小给缓冲区。
129、一些ByteArrayOutStream常用的方法:
 int size():返回此流缓冲区的大小
 byte[] toByteArray():生成一个新的字节数组,并将流的内容复制到此自己数组。
 String toString():将流的内容转换为String对象。
130、文件的合并:SequenceInputStream
 SequenceInputStream(InputStream head,InputStream tail):生成一个新的输入流,先读入

head,后是tail
 SequenceInputStream(Enumeration enum):将enum内的流根据序合并韦一个新的输入流,enum内

必须是InputStream对象。
131、Vector的功能就像一个数组,但它能根据需要来改变大小。
132、管道(pipe)提供一种线程间通信的方法,可由于IPC(Inter-Process Communication,进程间通

信)或是ITC(Inter-Thread Communication,线程间通信),但它无法执行不同主机之间的通信。
133、一个输入管道是用来接收一个输出管道所写出的数据,因此,一个线程会负责送出

(PipedOutputStream对象)数据,而另一个线程需负责接收(PipedInputStream对象)这些数据。
134、管道的数据流(data flow)是单向的,需要生成另一组输入和输出管道来负责另一个方向的数据传

送。
135、如果要将管道输出流的数据送到管道输入流,可使用
 PipedOutputStream(PipedInputStream pipeIn)或
 connect(PipedInputStream pipeIn)
140、字符流的类:1),BufferedReader是一种过滤器(filter)(extends FilterReader)。过滤器用

来将流的数据加以处理再输出。构造函数为:
 BufferedReader(Reader in):生成一个缓冲的字符输入流,in为一个读取器
 BufferedReader(Reader in,int size):生成一个缓冲的字符输入流,并指定缓冲区的大小为

size
 常用的方法为:
 String readLine():读入一行的文字(以\n或\r结尾),返回的String对象并不包含\n或\r,若

已达流的末端则返回null
 当使用缓冲流的read()或readLine()读取数据时,先会尝试从缓冲区读取,若缓冲区中并没有数

据,则会尽可能的将数据读入缓冲区中,以留待后续的读取。
141、2),LineNumberReader也是一种过滤器,而它也是一种缓冲流(extends BufferedReader),可用

来记录读入的行数,这里所谓的一行时以\n或\r结尾。常用方法:
 int getLineNumber():得到目前的行数。
142、3),PrinterWriter也是一种过滤器(extendes FilterWriter),可用来将输出导入某种设备。
143、I/O流的一个特点是它们能经过流链接的方式结合在一起,每个流类会执行特殊的工作再将结果传到

下一个链接,可使用过滤器将流链接在一起。
 BufferedReader inBuffer=new BufferedReader(new FileReader(inFile));
使用流链接时,只需要关闭最外层的链接流,其他链接的流会自动关闭。可以使用的链接是最后一个流(

inBuffer),此时,我们并无法直接使用FileReader流。如果写成:
 FileReader fileIn=new FileReader(inFile);
 BufferedReader inBuffer=new BufferedReader(fileIn);
此时,fileIn仍存在,这可能会因写程序的疏忽而造成同时有两个流链接导同一个来源(inFile),这往

往会有潜在的危险。
144、随机存取:RandomAccessFile,构造函数
 RandomAccessFile(File file,String mode):其中mode是用来指定存取的模式,可为r,w或rw
 RandomAccessFile(String name,String mode):name为和系统相关的文件名字
 常用方法:
 读取:boolean readBoolean();byte readByte();char readChar();double readDouble

();float readFloat();int readInt();long readLong();short readShort();String readLine()
 写入:void writeByte(Byte v);void writeByte(String s);void writeChar(char v);void

writeChars(String s);void writeDouble(double v);void writeFloat(float v);void writeInt(int

v);void writeLong(long v);void writeShort(short v)
 与目前文件位置有关的方法:
 void seek(long pos):将文件指针移到pos(不可为负)的位置这是相对于文件初始位置的值(

初始值为0)
 long getFilePointer():得到目前文件指针的位置。
 long length():得到文件的长度
145、文件压缩及解压缩方法:ZipInputStream(extends InflaterInputStream)和ZipOutputStream

(extends DeflaterOutputStream)
146、将文件写入ZIP文件的步骤:
 1)生成和所要生成的ZIP文件相关联的ZipOutputStream对象
 2)一个ZIP文件往往不只含有一个压缩文件,我们将每个要加入的文件称为一个ZIP入口,我们

使用ZipEntry(String fileName)来生成这些ZipEntry对象。
 3)使用putNextEntry(ZipEntry entry)将此ZIP入口加入ZIP文件
 4)将文件内容写入此ZIP文件
 5)使用closeEntry()结束目前的ZIP入口,继续下一个ZIP入口
147、将压缩文件从ZIP文件读出的步骤:
 1)生成和所要读入的ZIP文件相关联的ZipInputStream对象
 2)利用getNextEntry()得到下一个ZIP入口
148、我们将对象存取自一个流称为序列化(serialization),为了完成对象的序列化(将一个对象写导

流称为序列化(serializing),而从一个流将对象读出称为反序列化(deserializing))。
149、存取的对象需满足下列条件:
 类需为public
 类需实现Serializable接口
 若有数据不是可序列化的或不需要写出,则需将其声明为transient
150、java.io提供ObjectInputStream和ObjectOutputStream来存取对象,由于它们和DataInputStream及

DataOutputStream有共同的接口,因此它们也可使用相同的方法来读取或写入数据。还有其他的方法:
 void writeObject(Object obj):用于ObjectOutputStream,将对象写入流
 Object readObject():用于ObjectInputStream,将对象由流读出。

时间: 2024-09-08 07:22:22

学习Java的笔记(5)的相关文章

学习JAVA的笔记(一)

笔记 因为学校开JAVA课程的原因,让我接触到了JAVA.然后跑到网上用GOOGLE搜索了一下JAVA,得到很多消息.进去看看,弄的一头雾水,什么是API,什么是面向对象............(嘿嘿,偶什么基础都没有,是不是很卤莽啊.)马上把教材翻出来看看,到SKYCN下了个JDK.安装-配置环境-运行伟大的"HelloWorld".安装很简单,配置就让我头疼了,还是GOOGLE,找到资料,原来是这样:系统变量->新建->变量名:JAVA_HOME 变量值:c:\j2sd

学习Java的笔记(2)

笔记   31.由封装对象转换为基本数据类型:obj.XXXValue():obj为封装类的对象,XXX为该封装对象所表示的 基本数据类型.32.由字符串转换为基本数据类型:obj.parseXXX(String str):obj是封装类的对象,XXX为该封装对象 所表示的基本数据类型.33.由字符串转换为封装对象:obj.valueOf(String str).34.由封装对象转换为字符串:obj.toString().35.由基本数据类型转换为字符串:obj.toString(XXX val

学习Java的笔记(3)

笔记   61.每个类 只有一个类变量,属于该类的对象会共享类变量.不需要通过对象来存取类变量.62.一个static方法只能存取类的static数据:一个static方法只能存取类的static方法:无法在算他题 词方法中使用this:一个static方法无法被非static方法所替代.63.构造函数并没有返回值,它需和所在的类同名,如果所用的类并没有构造函数,Java编译器会自动生 成一个默认构造函数(不含参数).64.Java中,new是不可省略的,使用new表示该变量的内存是动态分配的,

学习Java的笔记(4)

笔记   91.包命名:小写字母,使用顺序反过来的域名.92.包内的类需声明为public,否则不属于此包的方法无法使用它.93.采用JAR文件方便维护和安装,一个JAR文件往往包含多个包,Sun J2SE所提供的标准类放在rt.jar中 .94.J2SE提供工具软件jar来生成JAR文件: jar cvf <jar file> <class file> jar cmvf <manifest> <jar file> <class file> 用m

java日记:学习java一年体会1

2005年3月24日         晴          于 北京交通大学16号宿舍楼 现在读大二下学期了,从大一下学期开始学习java,旁听java课程,到现在正式地上了必修的课程,一年多以来,感觉上对J2SE大概有了一个理解.不敢说钻研得很深刻,但是也能解决许多问题了. 一年来,在学习的过程中,遇到了许多问题和困难,解决问题之余也渐渐积累了不少经验.现在,同学之间讨论或者许多询问的问题中,我觉得许多都非常有代表性.从初学者的角度看,我觉得我可以提供一些经验,使现在的初学者可以少走一些弯路,

学习JAVA中面临的困惑!前辈教教我!

问题描述 我先说下我的情况:我学习Java有近一年时间.学习了Java基础,也能做一些小的程序.然后我就学习了JavaEE,主要通过视频学习的,其中熟悉JSP,Servlet,Struts2,Hibernate,Spring,Ajax!必须严重说明下:我学习了JavaEE,但是我没有用它做过一个网站,只用asp做过,主要原因:找不到很好的视频!谁有可以提供下!qq:1632703975我现在的情况是:我感觉我Java的基础没学好,JavaEE也没学好!但是一看书又都知道!我不知道该怎么深入下去!

java-关于学习Java的电脑配置

问题描述 关于学习Java的电脑配置 网上看到一款组装的笔记本,配置如下:CPU英特尔赛扬J1800,内存4G,硬盘320G,不知用来学习java,以及数据库等行不行.请各位大神不吝赐教 解决方案 开个玩笑,如果影响你编程最大的因素是总是控制不住自己想玩游戏,那么买个老一点的电脑恐怕更好--电脑慢得都看不成电影也玩不了游戏了,学习编程还绰绰有余. 事实上,只要开机能进系统的计算机,都可以用来学习编程.当年我刚上大学学习编程的计算机不过是Intel Celeron 266MHz(0.266GHz,

转-如何学习java

:(如何学习Java呢?) 枫叶国游子 2001-07-04 12:37:58 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路. 学习Java其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想.每一种语言的程序设计思想大同小异,只是一些由语言特性的而带来的细微差别,比如Java中的Interface,你几乎在以前的学习中没有碰到过.以下我仔细给你说几点: 1.我们必须明确一个大方向,也就是说现在面向对象的编程范畴.尽管人工智能曾经有所浪潮(看看Borl

小议学习java的浮躁心态-引出篇

"切忌浮躁"--我想这是在任何学习方法中,都会特意提出来的. 在国内的几个论坛也混了几年,甚至眼看着曾经轰轰烈烈的javaunion从成长到消失.在javaunion ,chinajavaworld,dev2dev,javaresearch,cn-java等论坛上,也相遇或结识了很多java爱好者,有经验丰富者,也有初出茅庐者. 其实,国内技术论坛,是个很奇怪很有意思的地方.从这里成长了一批批的开发者,但也从这里消失了一批批的开发者.犹记得javaunion论坛曾经的一篇名为"