IO流操作

来源:互联网 发布:淘宝上哪家攒机好 编辑:程序博客网 时间:2024/06/05 12:44

一、IO

1.  IO流是用来处理设备之间的数据传输,java是通过流的方式完成对数据的传输。

2.  操作的基本规律

     1>明确源和目的。

     2>操作的数据是否是纯文本。

     3>当体系明确后,明确要使用哪个具体的对象。

二、IO流结构

  IO

    |---字节流

          |--输入流抽象基类:InputStream

          |--输出流抽象基类:Outputtream

    |---字符流

          |--输入流抽象基类:Reader

          |--输出流抽象基类:Writer

注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

例 :Reader的子类FileReader

        Writer的子类FileWriter


FileReader程序示例:

package tan;import java.io.FileReader;public class FileReaderDemo {public static void main(String[] args) {FileReader fr=null;try {fr=new FileReader("demo.txt");//定义一个字符数组。用于存储读到字符。//该read(char[])返回的是读到字符个数。char buff[]=new char[100];int num=0;while((num=fr.read(buff))!=-1){System.out.println(new String(buff,0,num));}} catch (Exception e) {// TODO: handle exception}finally{try {fr.close();} catch (Exception e2) {// TODO: handle exception}}}}

小知识:
//传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。fw=new FileWriter("demo.txt",true);fw.write("tan zheng qiang");

程序示例1:字节流文件复制:利用循环一次一次的读,每读一次就输出一次,直到文件结束。

package tan;//1.导入io包  import java.io.*;public class Test {public static void main(String[] args) {FileInputStream fis=null;FileOutputStream fos=null;try{//2.生成代表输入流的对象fis=new FileInputStream("C:/Users/Administrator/workspace/IO流操作/from.txt");fos=new FileOutputStream("C:/Users/Administrator/workspace/IO流操作/to.txt");//3.生成一个字节数组byte buffer[] =new byte[1024];//4.调用输入流对象的read方法,返回数据的大小while(true){int temp=fis.read(buffer,0,buffer.length);if(temp==-1){break;}fos.write(buffer, 0, temp);}}catch(Exception e){System.out.println(e);}finally{try {//5.//关闭输入输出流fis.close();fos.close();} catch (Exception e) {System.out.println(e);}}}}

程序示例2:字符流的使用【文件复制】

//文件复制://1.导入io包//2.生成代表输入流的对象//3.生成一个字节数组//4.调用输入流对象的read方法,返回数据的大小//5.//关闭输入输出流package tan;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.management.RuntimeErrorException;public class ReadFile {public static void main(String[] args) {FileReader fr = null;FileWriter fw = null;try {fr = new FileReader("C:/Users/Administrator/workspace1/20140727/src/tan/FileTest.java");fw = new FileWriter("to.txt");char buf[] = new char[1024];//第一种方式int len = 0;while ((len = fr.read(buf)) != -1) {fw.write(buf, 0, len);}System.out.println("文件复制成功!");//第二种方式//while(true){//int temp=fr.read(buf, 0, buf.length);//if(temp==-1){//break;//}//fw.write(buf, 0, temp);//}} catch (Exception e) {throw new RuntimeException("文件复制失败!");} finally {try {fr.close();fw.close();} catch (Exception e) {e.toString();}}}}// public void write(char[] cbuf, int off, int len) throwsIOException写入字符数组的某一部分。




0 0