JAVA对文件的读操作总结

1.以字节的方式读取文件(单次读取1字节,单次读取多个字节)

2.以字符的方式读取文件(单次读取1字符,单次读取多个字符)

3.以行的方式读取文件

4.随机的方式读取文件

5.在文件尾部添加数据(RandomAccessFile,FileWriter)

6.大文件的读取

package com.javaIo.readFile;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**  
 * Package: com.javaIo.readFile  
 *  
 * File: ReadMethods.java   
 *  
 * Copyright @ 2015 Corpration Name  
 *   
 */
public class ReadMethods {

	
	/**
	 *  每次读取一个字节
	 */
	public static void ReadByOneByte(String fileName){
		File file = new File(fileName);
		try {
			FileInputStream fis = new FileInputStream(file);
			int size;
			//每次读取输入流的一个字节
			while((size = fis.read()) != -1){
				System.out.write(size);
			}
			fis.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		};
	}
	
	/**
	 * 每次读取多个字节
	 */
	public static void ReadByBytes(String fileName){
		File file = new File(fileName);
		byte[] bt = new byte[100];//每次所要读取的字节数,每次读取后存入byte[],这里是100字节
		try {
			FileInputStream fis = new FileInputStream(file);
			int size;
			while((size = fis.read(bt)) != -1){
				System.out.println(new String(bt, 0, size));
			   // System.out.write(bt, 0, size);
			}
			fis.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 每次读取一个字符
	 */
	public static void ReadByOneChar(String fileName){
		
		File file = new File(fileName);
		try {
			FileInputStream fis = new FileInputStream(file);
			InputStreamReader isr = new InputStreamReader(fis);
			int size;
			//每次读取一个字符
			while((size = isr.read()) != -1){
					System.out.write(size);
				
			}
			isr.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	/**
	 * 每次读取多个字符
	 */
	public static void ReadByChars(String fileName){
		
		File file = new File(fileName);
		char[] cha = new char[50];//每次读取50个字符,存入字符数组
		try {
			FileInputStream fis = new FileInputStream(file);
			InputStreamReader isr = new InputStreamReader(fis);
			int size;
			//每次读取30个字符的数据
			while((size = isr.read(cha)) != -1){
				System.out.println(new String(cha, 0, size));
			}
			isr.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 每次读取一行
	 */
	public static void ReadByLine(String fileName){
		
		File file = new File(fileName);
		try {
			BufferedReader br = new BufferedReader(new FileReader(file));
			String temp;
			//读取的时候每次读取一行
			while((temp = br.readLine()) != null){
				System.out.println(temp);
			}
			br.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 随机方式读取
	 */
	public static void ReadByRandom(String fileName){
		File file = new File(fileName);
		byte[] bt = new byte[100];//每次读取的100个字节
		try {
			//随机读取
			RandomAccessFile ra = new RandomAccessFile(file, "r");
			int size;
			while((size = ra.read(bt)) != -1){
				System.out.println(new String(bt, 0, size));
			}
			
			ra.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 在文件末尾添加数据,通过RandomAccessFile的方式
	 * 
	 */
	public static void appendDataA(String fileName,String content){
		File file = new File(fileName);
		try {
			RandomAccessFile ra = new RandomAccessFile(file, "rw");
			long length = ra.length();
			ra.seek(length);
			ra.writeBytes(content);
			ra.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} 
		
	}
	
	/**
	 * 使用FileWriter的write方法
	 * 
	 */
	public static void appendDataB(String fileName,String content){
		
		File file = new File(fileName);
		FileWriter fw = null;
		try {
			//构建一个写文件器,其中的true表示以追加的形式写入数据
			fw = new FileWriter(file, true);
			fw.write(content);
			
		} catch (IOException e1) {
			e1.printStackTrace();
		} finally {
			try {
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
			
	}
	
	/**
	 * 读取大文件,设置缓存
	 */
	public static void ReadBigFile(String fileName){
		
		File file = new File(fileName);
		byte[] bt = new byte[1024];
		int bufferSize = 1024;
		ByteBuffer byteBuffer = ByteBuffer.allocate(bufferSize);
		
		try {
			FileInputStream fis = new FileInputStream(file);
			FileChannel chanel = fis.getChannel();
			int size;
			while((size = chanel.read(byteBuffer)) != -1){
				byteBuffer.rewind();
				byteBuffer.get(bt);
				System.out.println(new String(bt, 0, size));
				byteBuffer.clear();
			}
			chanel.close();
			fis.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值