java向檔案中寫入內容,位元組流,字元流,緩衝,複製檔案,設定字元編碼 例項
阿新 • • 發佈:2019-02-08
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(); } }