1. 程式人生 > >java向檔案中寫入內容,位元組流,字元流,緩衝,複製檔案,設定字元編碼 例項

java向檔案中寫入內容,位元組流,字元流,緩衝,複製檔案,設定字元編碼 例項

package com.liuxin.test;

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Write {

	public static void main(String[] args)throws Exception {
		//2017年9月30日 下午1:48:23
		String contentString="shide 的大的呃呃";
		String fileName="D://3.txt";
		System.out.println("----------一段字串以位元組流寫入檔案------------");
		writeByte(contentString,fileName);
		System.out.println("----------一段字串以字元流寫入檔案------------");
		writeChar(contentString,fileName);
		System.out.println("----------一段字串通過緩衝流以位元組流寫入檔案------------");
		writeByteBuffer(contentString,fileName);
		System.out.println("----------一段字串通過緩衝流以字元流寫入檔案------------");
		writeCharBuffer(contentString,fileName);
		System.out.println("----------一段字串通過緩衝流以字元流寫入檔案,並這隻字型編碼------------");
		writeCharSetEncode(contentString,fileName);
		System.out.println("------------複製檔案------------------");
		readAndWrite();
		
		
	}

	private static void readAndWrite() throws Exception{
		//2017年9月30日 下午3:20:00
		FileInputStream is=new FileInputStream("D://1.txt");
		InputStreamReader isr=new InputStreamReader(is, "gbk"); //設定編碼
		BufferedReader br=new BufferedReader(isr);
		File file=new File("D://4.txt");
		
		if(file.exists()){//檔案存在著先刪除
			file.delete();
		}
		FileOutputStream os=new FileOutputStream("D://4.txt",true);//ture表示追加寫入。如果不需要追加寫入就直接去掉這個引數就行
		OutputStreamWriter osw=new OutputStreamWriter(os,"gbk");//設定編碼
		BufferedWriter bw=new BufferedWriter(osw);
		String tempReadString=null;
		while((tempReadString=br.readLine())!=null){
			bw.write(tempReadString);
			bw.newLine();//換行
		}
		br.close();
		isr.close();
		is.close();
		bw.close();
		osw.close();
		os.close();
	}

	private static void writeCharSetEncode(String contentString, String fileName) throws Exception {
		//2017年9月30日 下午3:10:55
		FileOutputStream fw=new FileOutputStream(fileName,true);//ture表示追加寫入。如果不需要追加寫入就直接去掉這個引數就行
        OutputStreamWriter osw=new OutputStreamWriter(fw,"gbk");
		BufferedWriter bw=new BufferedWriter(osw);
		bw.newLine();//換行
		bw.write(contentString);
		bw.close();
		fw.close();
	}

	private static void writeCharBuffer(String contentString, String fileName) throws Exception {
		//2017年9月30日 下午3:06:06
		FileWriter fw=new FileWriter(fileName,true);//ture表示追加寫入。如果不需要追加寫入就直接去掉這個引數就行
		BufferedWriter bw=new BufferedWriter(fw);
		bw.newLine();
		bw.write(contentString);
		bw.close();
		fw.close();
	}

	private static void writeByteBuffer(String contentString, String fileName) throws Exception {
		//2017年9月30日 下午2:30:11
		FileOutputStream os=new FileOutputStream(fileName,true);//ture表示追加寫入。如果不需要追加寫入就直接去掉這個引數就行
		BufferedOutputStream bos=new BufferedOutputStream(os);
		bos.write(contentString.getBytes());
		bos.write("\r\n".getBytes());  //換行追加
		bos.write("一段字串通過緩衝流以位元組流寫入檔案".getBytes());
		bos.write("追加內容".getBytes());
		bos.close();
		os.close();
	}

	private static void writeChar(String contentString,String fileName)throws Exception {
		//2017年9月30日 下午2:18:20
		FileWriter fw=new FileWriter(fileName,true);//ture表示追加寫入。如果不需要追加寫入就直接去掉這個引數就行
		fw.write(contentString);
		fw.close();
	}

	private static void writeByte(String contentString,String fileName) throws Exception{
		//2017年9月30日 下午1:55:39
		FileOutputStream os=new FileOutputStream(fileName);
		os.write(contentString.getBytes());
		os.close();
	}

	
}