去掉重复值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;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值