去掉重複值IO操作


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;

public class IoTest {

private static final String DIR_PATH = "C:\\新建文件夾";
private static final String WRITE_FILE_PATH = "C:\\新建文件夾\\output\\test.txt";
private static int readFileCount = 0;

public static void main(String[] args) {
Set<String> userIdSet = new LinkedHashSet<String>();
List<String> filePathList = getFileNames(DIR_PATH);
for (String filePath : filePathList) {
readFile(filePath, userIdSet);
}
writeFile(WRITE_FILE_PATH, userIdSet);
}

private static void writeFile(String writeFilePath, Set<String> userIdSet) {
File dir = new File(writeFilePath.substring(0, writeFilePath
.lastIndexOf("\\")));
if (!dir.exists()) {
dir.mkdirs();
}
File file = new File(writeFilePath);
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}

FileWriter fileWriter = null;
BufferedWriter bufferedWriter = null;
try {
fileWriter = new FileWriter(writeFilePath, false);// 第二個參數表示:是否爲追加模式
bufferedWriter = new BufferedWriter(fileWriter);
int writeFileCount = 0;
for (Object userId : userIdSet) {
bufferedWriter.write(userId.toString());
bufferedWriter.newLine();
System.out.println(++writeFileCount + " : " + userId.toString()
+ " write");
}
bufferedWriter.write("=====end=====");
bufferedWriter.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedWriter != null) {
bufferedWriter.close();
}
if (fileWriter != null) {
fileWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

private static void readFile(String readFilePath, Set<String> userIdSet) {
String userId;
FileReader fileReader = null;
BufferedReader bufferedReader = null;
try {
fileReader = new FileReader(readFilePath);
bufferedReader = new BufferedReader(fileReader);
while ((userId = bufferedReader.readLine()) != null) {
userIdSet.add(userId);
System.out.println(++readFileCount + " : " + userId + " read");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
if (fileReader != null) {
fileReader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

/**
* 獲得目錄下所有文件完整路徑
* @param dirPath 目錄路徑
* @return
*/
private static List<String> getFileNames(String dirPath) {
List<String> filePathList = new ArrayList<String>();
File rootFile = new File(dirPath);
String[] nameArray = rootFile.list();
for (int i = 0; i < nameArray.length; i++) {
File tempFile = new File(rootFile.getPath(), nameArray[i]);
if (tempFile.isFile()) {
filePathList.add(dirPath + "\\" + nameArray[i]);
}
}
return filePathList;
}
}
發佈了17 篇原創文章 · 獲贊 1 · 訪問量 2714
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章