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();
		}

	}

}

 

 

 

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