Java中的IO操作
2012-04-05 11:38
204 查看
1.I/O操作的目标
从数据源当中读取数据(I)以及将数据写入到数据目的地当中(O)
2.I/O的分类方法
第一种分法:
1.输入流
2.输出流
第二种分法:
1.字节流(把字符转换为ASCII码,然后以字节的方式读取出来)
2.字符流(读写文件时,以字符为基础)
第三种分法:
1.节点流(真正处理数据的IO流)
2.处理流(在节点流的基础上对数据进行再加工.类似于装饰者(Decorator)模式)
3.读取文件写入文件的方法
a.字节流的操作
(1).文件内容较少的情况
from.txt 文件的内容为 abcd
to.txt的内容为空
(2).文件内容比较多(采用循环的方式读取,难道下一次读取都是在上一次读取完后的内容后面进行读取吗???)
b.字符流的操作
(1).文件内容较少的情况
from.txt 文件的内容为 abcd
to.txt的内容为空
c.处理流的使用实例
(1).创建一个文件user.txt 内容如下:
2.声明一个类Test.java,代码如下:
3.执行结果:
总结:
I/O当中的核心类FileInputStream 继承自 InputStream,FileOutputStream 继承自OutputStream.
FileReader 继承自Reader,FileWriter继承自Writer
I/O核心类的核心方法: InputStream
int read(byte[] b,int off,int len) //返回读取的数据长度,读取的数据都放在参数b中,off参数表示偏移量(在第几个位置输出),len参数表示读取的长度
OutputStream
void write(byte[],int off,int len)
从数据源当中读取数据(I)以及将数据写入到数据目的地当中(O)
2.I/O的分类方法
第一种分法:
1.输入流
2.输出流
第二种分法:
1.字节流(把字符转换为ASCII码,然后以字节的方式读取出来)
2.字符流(读写文件时,以字符为基础)
第三种分法:
1.节点流(真正处理数据的IO流)
2.处理流(在节点流的基础上对数据进行再加工.类似于装饰者(Decorator)模式)
3.读取文件写入文件的方法
a.字节流的操作
(1).文件内容较少的情况
from.txt 文件的内容为 abcd
to.txt的内容为空
(2).文件内容比较多(采用循环的方式读取,难道下一次读取都是在上一次读取完后的内容后面进行读取吗???)
import java.io.*; class Test { public static void main(String arg[]) { //生成输入流的引用 FileInputStream fis=null; //生成输出流的引用 FileOutputStream fos=null; try{ //生成代表输入流的对象 fis=new FileInputStream("D:/src/from.txt"); //生成代表输入流的对象 fos=new FileOutputStream("D:/src/to.txt"); //生成一个字节数组 byte[] buffer=new byte[100]; //buffer:读取数据放在里面,off:表示偏移量,len:表示读取的长度 fis.read(buffer,0,100); for(int i=0;i<buffer.length;i++) { //输出的结果为96,97,98,99,0,0..... //如果把上面的偏移量改为4,后面的长度必须改为96,否则出现下标越界的异常,输出的几位为:0,0,0,0,96,97,98,99,0,0...... System.out.println(buffer[i]); } //将字节还原为字符 String str=new String(buffer); System.out.println(str.trim()); //写入 fos.write(buffer,0,100); } catch(Exception e) { System.out.println(e); } finally { try{ fis.close(); fos.close(); }catch(Exception e){ System.out.println(e); } } } }
import java.io.*; class Test { public static void main(String arg[]) { FileInputStream fis=null; FileOutputStream fos=null; try{ fis=new FileInputStream("D:/src/from.txt"); fos=new FileOutputStream("D:/src/to.txt"); byte[] buffer=new byte[1024]; while(true) { //当read()方法返回-1时,表示文件内容已经全部读完 int iLen=fis.read(buffer,0,1024); if(iLen==-1)break; fos.write(buffer,0,1024); } } catch(Exception e) { System.out.println(e); } finally { try{ fis.close(); fos.close(); }catch(Exception e) { System.out.println(e); } } } }
b.字符流的操作
(1).文件内容较少的情况
from.txt 文件的内容为 abcd
to.txt的内容为空
import java.io.*; class Test { public static void main(String arg[]) { FileReader fr=null; FileWriter fw=null; try { fr=new FileReader("d:/src/from.txt"); fw=new FileWriter("d:/src/to.txt"); //注意:这里是使用char[],而在字节流中使用 的是byte[] char[] buffer=new char[100]; fr.read(buffer,0,100); for(int i=0;i<buffer.length;i++) { //输出结果为a,b,c,d,空,空...... System.out.println(buffer[i]); } //写入 fw.write(buffer,0,100); } catch(Exception e) { System.out.println(e); } finally { try{fr.close();fw.close();} catch(Exception e){System.out.println(e);} } } }
c.处理流的使用实例
(1).创建一个文件user.txt 内容如下:
2.声明一个类Test.java,代码如下:
import java.io.*; class Test { public static void main(String arg[]) { FileReader fr=null; BufferedReader bufferedReader=null; try { fr=new FileReader("d:/src/users.txt"); //生成BufferedReader对象(参数为FileReader类的对象,用到了设计模式中的"装饰者(Decorator)模式") bufferedReader=new BufferedReader(fr); String line=null; while(true){ //读一行 line=bufferedReader.readLine(); if(line==null) { break; } System.out.println(line); } } catch(Exception e) { System.out.println(e); } finally { try{fr.close();bufferedReader.close();} catch(Exception e){System.out.println(e);} } } }
3.执行结果:
总结:
I/O当中的核心类FileInputStream 继承自 InputStream,FileOutputStream 继承自OutputStream.
FileReader 继承自Reader,FileWriter继承自Writer
I/O核心类的核心方法: InputStream
int read(byte[] b,int off,int len) //返回读取的数据长度,读取的数据都放在参数b中,off参数表示偏移量(在第几个位置输出),len参数表示读取的长度
OutputStream
void write(byte[],int off,int len)
相关文章推荐
- java.io.File类各种文件操作
- java IO总结之字节流操作文件读写
- Java的IO操作(一) - File类,RandomAccessFile类,FileInputStream、FileOutputStream类
- java的io操作(将字符串写入到txt文件中)
- Java IO操作的实例代码
- Java File类文件管理及IO读写、复制操作
- JAVA学习——IO操作(四)——缓冲处理流
- Java IO-基本文件写操作
- Java的IO操作(二) - 带缓冲区的流对象、写入基本数据类型、实现命令行中的copy命令
- Java-IO 文件操作
- Java IO实战操作(四)
- Java io文件操作(按字符、字节、行、随机读取,追加,文件操作)
- 提高Java IO操作的性能
- java IO操作:字节流与字符流区别
- Java的IO操作(四) - SequenceInputStream类,实例:一个文件分割、合并工具
- Java文件IO操作应该抛弃File拥抱Paths和Files
- java io 操作
- 在进行javaIO写文件操作后文件内容为空的情况
- java中IO操作 利用文件流 过滤流对文件进行读写操作
- java io对文件的操作