Java常用工具类---输入输出流

目录

 

输入输出流

File类

字节流

FileInputStream

FileOutputStream

缓冲流

字符流

字节字符转换流

对象序列化


输入输出流

输出流

输入流

 

File类

文件可以认为是相关记录或放在一起的数据集合

在java中,使用java.io.File类对文件进行操作

绝对路径和相对路径

绝对路径:从盘符开始的路径

相对路径:是从当前路径开始的路径

package com.imooc.file;

import java.io.File;
import java.io.IOException;

public class FileDemo {
	public static void main(String[] args) {
		//创建File对象
//		File file1=new File("F:\\javaWork\\imooc\\IOProj\\score.txt");
//		File file1=new File("F:\\javaWork","imooc\\IOProj\\score.txt");
		File file=new File("F:\\javaWork");
		File file1=new File(file,"imooc\\IOProj\\imooc.txt");
		//判断文件是否存在
		System.out.println("是否是目录:"+file1.isDirectory());
		System.out.println("是否是文件:"+file1.isFile());
		
		//创建目录 多级目录用mkdirs()
		File file2=new File("F:\\javaWork\\imooc\\IOProj\\HashSet");
		if(!file2.exists()) {
			file2.mkdir();
		}
		
		//创建文件
		if(!file1.exists()) {
			try {
				file1.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

字节流

字节输入流:InputStream

字节输出流:OutputStream

FileInputStream

  • 从文件系统中的某个文件中获得输入字节
  • 用于读取诸如图像数据之类的原生字节流

package com.imooc.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileInputDemo2 {

	public static void main(String[] args) {
		// 创建一个FileInputStream对象
		try {
			FileInputStream fis = new FileInputStream("imooc.txt");
			byte[] b=new byte[100];
			fis.read(b,0,5);
			System.out.println(new String(b));
			fis.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

FileOutputStream

package com.imooc.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputDemo {

	public static void main(String[] args) {
		FileOutputStream fos;
		FileInputStream fis;
		try {
			fos = new FileOutputStream("imooc.txt",true);
			fis=new FileInputStream("imooc.txt");
			fos.write(50);
			fos.write('a');
			System.out.println(fis.read());
			System.out.println((char)fis.read());
			fos.close();
			fis.close();

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 

package com.imooc.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputDemo1 {

	public static void main(String[] args) {
		// 文件拷贝
		try {
			FileInputStream fis=new FileInputStream("happy.gif");
			FileOutputStream fos=new FileOutputStream("happycopy.gif");
			int n=0;
			byte[] b=new byte[1024];
			while((n=fis.read(b))!=-1){
				fos.write(b,0,n);
			}
			fis.close();
			fos.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch(IOException e){
			e.printStackTrace();
		}
		

	}

}

缓冲流

缓冲输入流:BufferedInputStream

缓冲输出流:BufferedOutputStream

package com.imooc.file;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferedDemo {

	public static void main(String[] args) {
		try {
			FileOutputStream fos=new FileOutputStream("imooc.txt");
			BufferedOutputStream bos=new BufferedOutputStream(fos);
			FileInputStream fis=new FileInputStream("imooc.txt");
			BufferedInputStream bis=new BufferedInputStream(fis);
			long startTime=System.currentTimeMillis();
			bos.write(50);
			bos.write('a');
			bos.flush();
			System.out.println(bis.read());
			System.out.println((char)bis.read());
			long endTime=System.currentTimeMillis();
			System.out.println(endTime-startTime);
			fos.close();
			bos.close();
			fis.close();
			bis.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		

	}

}

字符流

字符输入流:Reader

字符输出流:Writer

字节字符转换流

  • InputStreamReader
  • OutputStreamWriter
package com.imooc.charstream;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class ReaderDemo {
	// 把imooc.txt复制到imooc1.txt中
	public static void main(String[] args) {
		try {
			FileInputStream fis = new FileInputStream("imooc.txt");
			InputStreamReader isr = new InputStreamReader(fis, "GBK");
			BufferedReader br = new BufferedReader(isr);
			FileOutputStream fos = new FileOutputStream("imooc1.txt");
			OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");
			BufferedWriter bw = new BufferedWriter(osw);
			int n = 0;
			char[] cbuf = new char[10];
//		    while((n=isr.read())!=-1){
//		    	   System.out.print((char)n);
//		    }
//			while((n=isr.read(cbuf))!=-1){
//				String s=new String(cbuf,0,n);
//				System.out.print(s);
//			}
			while ((n = br.read(cbuf)) != -1) {
				// String s=new String(cbuf,0,n);
				bw.write(cbuf, 0, n);
				bw.flush();
			}
			fis.close();
			fos.close();
			isr.close();
			osw.close();
			br.close();
			bw.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

对象序列化

步骤:

  1. 创建一个类,继承Serializable接口
  2. 创建对象
  3. 将对象写入文件
  4. 从文件读取对象信息
  • 对象输入流 ObjectInputStream
  • 对象输出流 ObjectOutputStream
	package com.imooc.serial;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class GoodsTest {

	public static void main(String[] args) {
		// 定义Goods类的对象
		Goods goods1 = new Goods("gd001", "电脑", 3000);
		try {
			FileOutputStream fos = new FileOutputStream("imooc.txt");
			ObjectOutputStream oos = new ObjectOutputStream(fos);
			FileInputStream fis = new FileInputStream("imooc.txt");
			ObjectInputStream ois = new ObjectInputStream(fis);
			// 将Goods对象信息写入文件
			oos.writeObject(goods1);
			oos.writeBoolean(true);
			oos.flush();
			// 读对象信息
			try {
				Goods goods = (Goods) ois.readObject();
				System.out.println(goods);
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(ois.readBoolean());

			fos.close();
			oos.close();
			fis.close();
			ois.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章