使用Java的IO流拼接SQL語句

使用IO流拼接SQL語句
讀取txt文件的內容;然後拼接成SQL語句後輸出到txt文件。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IOStreams {

	public static void main(String[] args) {
		// 讀數據(相對路徑)
		String readFileName = ".\\source\\test_1029.txt"; 
		Collection coll = readFiles(readFileName);
		System.out.println("上傳的數據總條數:"+ coll.size());
		
		// 寫數據(相對路徑)
		String writeFileName = ".\\source\\test_point_1029.txt";
		int num = writeFiles(writeFileName, coll);
		System.out.println("寫入的數據總條數:" + num);
	}
	
	/**
	 * 讀取txt文件入集合
	 * @param pathName
	 * @return
	 * @throws IOException 
	 */
	public static Collection readFiles(String pathName) {
		Collection coll = new ArrayList<>();
		File file = null;
		InputStreamReader reader = null;
		String line = null;
		try {
			file = new File(pathName);
			// 建立一個輸入流對象reader
			reader = new InputStreamReader(new FileInputStream(file));
			// 建立一個對象,它把文件內容轉成計算機能讀懂的語言
            BufferedReader br = new BufferedReader(reader);
            while (br.ready()) { 
            	// (line = br.readLine())!=null,會出現漏讀首行,文末行爲null
            	// 可以用br.ready()解決
            	// 一次讀入一行數據  
                line = br.readLine();
                //System.out.println(line);
                // 添加
                coll.add(line);
            } 
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(null != reader)
				try {
					reader.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
		return coll;
	}
	
	/**
	 * 把拼接後的sql語句寫回txt文件
	 * @param pathName   文件的路徑
	 * @param line	數據
	 */
	public static int writeFiles(String pathName,Collection coll){
		File writename = new File(pathName);
		BufferedWriter out = null;
		// 計數,統計寫入的條數
		int count = 0;
		try {
			// 每次都創建新文件 
			writename.createNewFile(); 
			out = new BufferedWriter(new FileWriter(writename));  
			for(Iterator iter = coll.iterator(); iter.hasNext();){
				// \r\n即爲換行
				out.write("INSERT INTO test (phone,souce) VALUES ('"+iter.next()+"','test');\r\n");   
		        out.flush(); // 把緩存區內容壓入文件  
		        count ++;
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if(null != out)
				try {
					out.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} 
		}
		return count;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章