Java的幾種讀文件方式

Java的幾種讀文件方式,一種爲按單字節讀取,即每次僅讀取一個字節,此方式適合圖像文件,聲音文件,視頻文件等二進制文件操作;第二種方式爲按多字節讀取,自定義一次讀的字節數量;第三種方式爲按字符讀操作,即每次讀一個字符,此方式適合文本文件,數據文件的讀操作;第四種方式爲按行讀操作,即一次讀取一行數據

package com.anson.java;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.net.Socket;

public class FileOpr{
	

	//按字節形式讀取文件數據,用於二進制文件讀寫,圖片,聲音,視頻等文件形式
	//每次讀入一個字節
	public void readFileByByte(String fileName)
	{
		File file=new File(fileName);//實例化一個文件對象
		InputStream is=null;
		try 
		{
			is=new FileInputStream(file);//實例化一個文件輸入流
			int dataByte;//定義一個暫時存儲數據的int類型的對象
			while((dataByte=is.read())!=-1)//讀取,判斷是否到文件結尾
			{
				System.out.println(dataByte);//輸出
			}
		} catch (FileNotFoundException e)
		{
			e.printStackTrace();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				is.close();//關閉流
			} catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}
	
	//每次讀取多個字節,每次讀取4個字節
	public void multiReadByBytes(String fileName)
	{
		File file=new File(fileName);//實例化一個文件對象
		InputStream is=null;
		try
		{
			is=new FileInputStream(file);//實例化一個文件輸入流
			byte[] bytes=new byte[4];//定義一個字節數組,暫時存放讀取的數據
			int len;//數據長度判斷標誌
			while((len=is.read(bytes))!=-1)
			{
				System.out.write(bytes, 0, len);//輸出控制檯
			}
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try 
			{
				is.close();//關閉文件輸入流
			} catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}
	
	
	//按字符類型讀取完文件信息,每次讀取一個字符,適合文本,數字類文件
	public void readFileByChar(String fileName)
	{
		File file=new File(fileName);//實例化一個文件對象
		Reader reader=null;
		
		try 
		{
			InputStream inputStream=new FileInputStream(file);//實例化一個文件輸入流,
			reader=new InputStreamReader(inputStream);//實例化一個數據讀入流
			int tmpData;
			while((tmpData=reader.read())!=-1)
			{
				if((char)tmpData!='\r')//判斷換行
				{
					System.out.print((char)tmpData);//輸出
				}
			}
		} catch (FileNotFoundException e)
		{
			e.printStackTrace();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				reader.close();//關閉流
			} catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}
	
	
	//按行讀取文件
	public void readFileByLine(String fileName)
	{
		File file=new File(fileName);//實例化一個文件對象
		BufferedReader bf=null;
		try 
		{
			bf=new BufferedReader(new FileReader(file));//實例化對象
			String str=null;
			while((str=bf.readLine())!=null)
			{
				System.out.println(str);//輸出
			}
		} catch (FileNotFoundException e)
		{
			e.printStackTrace();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				bf.close();//關閉流
			} catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}

}


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