Java追加数据到文本文件

如果您正在处理文本数据并且写操作数较少,请使用FileWriter并使用其附带标志值为true的构造函数。如果写操作的数量巨大,您应该使用BufferedWriter。

要将二进制或原始流数据附加到现有文件,应使用FileOutputStream。

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
 
public class AppendFile {
 
    /**
     * This class shows how to append text to existing file
     * @param args
     */
    public static void main(String[] args) {
        String filePath = "/Users/pankaj/append.txt";
        String appendText = "This String will be appended to the file, Byte=0x0A 0xFF";
         
        appendUsingFileWriter(filePath, appendText);
         
        appendUsingBufferedWriter(filePath, appendText, 100);
         
        appendUsingOutputStream(filePath, appendText);
    }
 
    /**
     * Use Streams when you are dealing with raw data, binary data
     * @param data
     */
    private static void appendUsingOutputStream(String fileName, String data) {
        OutputStream os = null;
        try {
            //below true flag tells OutputStream to append
            os = new FileOutputStream(new File(fileName), true);
            os.write(data.getBytes(), 0, data.length());
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
     
    /**
     * Use BufferedWriter when number of write operations are more
     * @param filePath
     * @param text
     * @param noOfLines
     */
    private static void appendUsingBufferedWriter(String filePath, String text, int noOfLines) {
        File file = new File(filePath);
        FileWriter fr = null;
        BufferedWriter br = null;
        try {
            //to append to file, you need to initialize FileWriter using below constructor
            fr = new FileWriter(file,true);
            br = new BufferedWriter(fr);
            for(int i = 0; i<noOfLines;i++){
                br.newLine();
                //you can use write or append method
                br.write(text);
            }
             
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                br.close();
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
 
    /**
     * Use FileWriter when number of write operations are less
     * @param filePath
     * @param text
     * @param noOfLines
     */
    private static void appendUsingFileWriter(String filePath, String text) {
        File file = new File(filePath);
        FileWriter fr = null;
        try {
            //Below constructor argument decides whether to append or override
            fr = new FileWriter(file,true);
            fr.write(text);
             
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
 
}

 

posted on 2016-11-22 17:40  我叫涛哥  阅读(461)  评论(0)    收藏  举报

导航