锁定老帖子 主题: corejava辅导(12--2)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-03
处理跨平台性
对于命令:File f2=new file(“d:\\abc\\789\\1.txt”) 这个命令不具备跨平台性,因为不同的OS的文件系统的分隔符是不相同。 使用file类的separtor属性,返回当前平台文件分隔符。 File newD = new File("aa"+File.separator+"bb"+File.separator+"cc"); File newF = new File(newD,"mudi.txt"); try{ newD.mkdirs(); newF.createNewFile(); }catch(Exception e){}
Java中的I/O流
Java中的I/O流是用来JVM(Java虚拟机)访问虚拟机外部数据源的。 1,按数据流向分 输入流,从外部数据源读入JVM 输出流,从JVM输出到外部数据源。
2,按数据单位分 字节流:以字节为单位进行数据传输 字符流:以字符为单位进行数据传输
3,按流的功能分 节点流:可以实现数据输入输出的流 过滤流:在节点流的基础之上添加功能的流,其本身是无法实现输入输出的,他必须借助于节点流才能实现输入输出的功能。
字节输入流:
InputStream类 (抽象类) 所有字节输入流的父类
io包中的InputStream为所有字节输入流的父类。 int read();读入一个字节(每次一个); 可先使用new byte[],调用read(byte[] b),byte[]数组长度决定了可以读取到的最大字节数,用来调整效率。read (byte[])返回值可以表示有效数;read (byte[])返回值为-1表示结束。
字节输出流:io包中的OutputStream位所有字节输入流的父类。Write和输入流中的read相对应。
在流中close()方法由程序员控制。因为输入输出流已经超越了VM的边界,所以有时可能无法回收资源。 原则:凡是跨出虚拟机边界的资源都要求程序员自己关闭,不要指望垃圾回收。 以Stream结尾的类都是字节流。 如果构造FileOutputStream的同时磁盘会建立一个文件。如果创建的文件与磁盘上已有的文件名重名,就会发生覆盖。 用FileOutputStream中的boolean,则视添加情况,将数据覆盖重名文件还是将输入内容放在文件的后面。(编写程序验证)
如:FileInputStream,ObjectInputStream,PipedInputStrean都是InputStream类的子类。
1) 三个基本的read()方法 a. int read(): 从流里读出的一个字节或者-1(返回-1表示数据已经读取完毕); b. int read(byte[]):将数据读入到字节数组中,并返回所读的字节数; (期望读了多长) c. int read(byte[], int , int):两个int参数指定了所要填入的数组的子范围。 2) 其它方法 a. void close(): 关闭流,如使用过滤器流,关闭最外部的流,会关闭其余的流。 b. int available(): 返回可从流中读取的字节数。 c. void skip(long): 丢弃了流中指定数目的字符。 d. boolean markSupported() e. void mark(int) f. void rese()
OutputStream类(抽象类) 所有字节输出流的父类。
1) 三个基本的write()方法 a. void write() b. void write(byte[]) c. void write(byte[], int , int) 2) 其它方法 a. void close(): 关闭流,如使用过滤器流,关闭最外部的流,会关闭其余的流。 b. void flush(): 允许你强制执行写操作。 注意:在流中close()方法由程序员控制。因为输入输出流已经超越了JVM的边界,所以有时可能无法回收资源。 原则:凡是跨出虚拟机边界的资源都要求程序员自己关闭,不要指望垃圾回收。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 1104 次