16、java写入文件的几种方式

package com.tij.io.file;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * java写入文件
 * <p>怎样用fileWrite、BUfferedWriter、Files、FileOutPutStream写入文件
 * @author GYJ
 * @date 2014-3-21
 */
public class WriteFile {

	/**
	 * FileWrite 适用于文件量少的写入,因为它是直接写入到文件的不会进行缓存。也是最简单的方式
	 * BufferedWriter和FileWrite 有点相似,但是的话他是利用了缓存区来写入,降低了IO的操作,提高了很多的性能适用于大数据量的操作
	 * FileOutputStream 的性能介于前两者之间
	 * Files 是java7提供的文件类
	 * @param args
	 */
	public static void main(String[] args) {
		String data = "马上开始写入这些文件";
		int noOfLines = 10000;
		writeUsingFileWrite(data);
        
        writeUsingBufferedWrite(data, noOfLines);
         
        writeUsingFiles(data);
         
        writeUsingOutputStream(data);
        
        System.out.println("DONE");
        //out put==============
        /*  ==========FileWrite==========
		==========BufferedWrite==========
		==========Files==========
		==========OutputStream==========
		DONE*/
	}
	
	/**
	 * 使用流的方式
	 * @param data	要写入的数据
	 */
	private static void writeUsingOutputStream(String data) {
		System.out.println("==========OutputStream==========");
		OutputStream os = null;
		try {
			//定义要写入的目标文件
			os = new FileOutputStream(new File("/Users/GYJ/java1.txt"));
			os.write(data.getBytes(), 0, data.length());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * java7中提供的Files类写入
	 * @param data
	 */
	private static void writeUsingFiles(String data) {
		System.out.println("==========Files==========");
		try {
			Files.write(Paths.get("/Users/GYJ/java1.txt"), data.getBytes());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 适用于数据量比较多,使用的是内部缓存区减低了IO的操作,节省时间
	 * @param data
	 * @param noOfLines
	 */
	private static void writeUsingBufferedWrite(String data, int noOfLines) {
		System.out.println("==========BufferedWrite==========");
		File file = new File("/Users/GYJ/java1.txt");
		FileWriter fr = null;
		BufferedWriter br = null;
		String dataWithNewLine = data + System.getProperty("line.separator");
		try {
			fr = new FileWriter(file);
			br = new BufferedWriter(fr);
			for (int i = noOfLines; i > 0; i-- ) {
				 br.write(dataWithNewLine);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * FileWrite:适用于数据量较少
	 * @param data
	 */
	private static void writeUsingFileWrite(String data) {
		System.out.println("==========FileWrite==========");
		File file = new File("/Users/GYJ/java1.txt");
		FileWriter fr = null;
		try {
			fr = new FileWriter(file);
			fr.write(data);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

你可能感兴趣的:(java)