java中的IO操作总结


java中主要的IO 主要是指 Input 和Output 流

流按照操作数据可以分为两种:字节流和字符流

按照流向分为:输入流和输出流



IO流 常用的四个基类

字节流的抽象基类:InputStream OutputStream

字符流的抽象基类:Reader Writer




package com.itheima;

import java.io.*;
import java.io.IOException;

public class FileWriteDemo {
	public static void main(String[] args) throws IOException
	{
		//创建一个FileWrite对象,该对象一杯初始化就必须要明确被操作的文件
		FileWriter fw =new FileWriter("E:\\java\\demo.txt");//该步骤是创建文件的位置
		//调用write方法 对文件进行写入操作
		fw.write("123123");//这个操作是将123123写入到流中保存在内存中
		//使用flish可以将流中的数据写入该对象具体文件中
		fw.flush();
		//可以用close关闭流资源 但是关闭之前会刷新一次缓存中的数据 来实现写入
		fw.write("1212");
		fw.close();

	}
	public static void sop(Object obj){
		System.out.println(obj);
	}
}



package com.itheima;
//io输出的异常处理方式
import java.io.FileWriter;
import java.io.IOException;

public class io {
	public static void main(String[] args) /*throws IOException*/{
		//在外面进行引用
		FileWriter fw =null;
		try{
			//在里面进行创建对象 可以让finally fw引用到
			fw=new FileWriter("E:\\java\\demo.txt");
			fw.write("abcdfs");
	
		}catch(IOException e){
			System.out.println("catch:"+e.toString());
		}finally{
			try{
				if(fw!=null)
					fw.close();	
			}catch(IOException e){
				System.out.println(e.toString());
			}	
		}
		

	}
}



package com.itheima;

import java.io.*;
import java.io.IOException;

public class FileWriteDemo {
	public static void main(String[] args) throws IOException
	{
		//创建一个FileWrite对象,该对象一杯初始化就必须要明确被操作的文件
		FileWriter fw =new FileWriter("E:\\java\\demo.txt",true);//该步骤是创建文件的位置 ture代表在已有文件末尾添加数据
		//调用write方法 对文件进行写入操作
		fw.write("123123");//这个操作是将123123写入到流中保存在内存中
		//使用flish可以将流中的数据写入该对象具体文件中
		fw.flush();
		//可以用close关闭流资源 但是关闭之前会刷新一次缓存中的数据 来实现写入
		fw.write("\r\n\1jklk212");//记事本中用\r\n\ 来换行
		fw.close();

	}
	public static void sop(Object obj){
		System.out.println(obj);
	}
}







package com.itheima;

import java.io.*;

public class BufferedWriterDemo {
	public static void main(String[] args) throws Exception
	{
		//创建一个字符写入流对象
		FileWriter fw =new FileWriter("E:\\java\\buf.txt");
		//为了提高字符写入流的效率 加入缓冲技术
		//只要将需要被提高效率的流对象作为参数传递给缓冲区的贡枣函数即可
		BufferedWriter bufw=new BufferedWriter(fw);
		
		for(int x=1;x<5;x++){
		bufw.write("abcdef");
		bufw.newLine();//换行
		//只要用到缓冲区就要记得刷新
		bufw.flush();
		//其实关闭缓冲区,就是在关闭缓冲区中的对象流
		}
		bufw.close();
	}
}



package com.itheima;

import java.io.*;
//通过缓冲区复制一个.txt文件
public class BufferedReaderDemo {
	public static void main(String[] args) /*throws IOException*/
	{
		BufferedReader bufr=null;
		BufferedWriter bufw=null;
		try{
			bufr=new BufferedReader(new FileReader("E:\\java\\buf.txt"));
			bufw=new BufferedWriter(new FileWriter("E:\\java\\buf_copy.txt"));
			
			String line =null;
			
			while((line=bufr.readLine())!= null){
		
				bufw.write(line);
				//	添加换行行
				bufw.newLine();
				bufw.flush();
				
			}
			
			
		}catch(IOException e){
			throw new RuntimeException("读写失败");
		}finally{
			try{
				if(bufr!=null)
					bufr.close();
			}catch(IOException e){
				throw new RuntimeException("读写关闭失败");
			}
			try{
				if(bufw!=null)
					bufw.close();
			}catch(IOException e){
				throw new RuntimeException("写入关闭失败");
			}
		}
				
		//创建一个读取流对象和文件相关联
		//FileReader fr=new FileReader("buf.txt");
		//为了提高效率 加入缓冲技术 将字节流
	}
}