首页 > 代码库 > IO流操作

IO流操作

一、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写入字符数组的某一部分。