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;
}
}
分享到:
相关推荐
在IT领域,文本内容的重复性检测是一项重要的任务,尤其在大数据分析、文档管理或文本挖掘等...通过熟练运用C#的IO操作和字符串处理方法,我们可以构建一个高效且灵活的文本处理工具,满足各种文本重复性检测的需求。
在这个方法中,你可以检查请求参数,如果发现有null值,可以进行替换操作。 2. `postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)`: 在目标...
4. `distinct()`: 去除重复的项。 5. `concatMap()`: 平行处理源项,但按顺序发射结果。 三、组合操作符 1. `merge()`: 合并多个Observable为一个Observable,同时发射所有Observable的项。 2. `zip()`: 将多个...
06 阻塞IO与非阻塞IO 07 select及触发方式 08 select监听多连接 09 select与epoll的实现区别 第36章 01 异步IO 02 selectors模块介绍 03 selectors模块应用 04 作业介绍 第37章 01 selctors实现文件上传与下载 ...
本篇文章将深入探讨如何使用文件IO操作来查找英语文章中的特定单词并统计其出现次数。这个过程通常涉及读取文件内容、字符串处理以及计数算法。 首先,我们需要了解文件IO的基本概念。文件IO(Input/Output)是指...
这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ...
9. 数据处理和清洗:在数据采集后,可能需要进行数据清洗和预处理,如去除重复值、处理缺失值、类型转换等,这些可以通过Linq查询或自定义函数实现。 10. 安全性:考虑到数据敏感性,文件操作可能需要考虑权限控制...
`distinct()`用于去除重复的元素,而`sorted()`则可以对流进行排序。`reduce()`操作可以将流中的所有元素组合成单个值,比如求和或求最大值。 此外,会议可能还涵盖了并行流(Parallel Streams),这是Java 8为了...
例如,数据清洗涉及到去除重复记录,异常值检测则需要找出不符合正常分布或逻辑的数据点,如极端值或离群点,并决定是否剔除或替换。 在数据准备阶段,我们还需要对数据进行标准化或归一化,使不同特征在同一尺度上...
例如,在备份过程中,数据先经过重删处理去除重复部分,然后对剩余的唯一数据块进一步执行压缩,最终实现重删和压缩效果的叠加。 ### 二、主存储重删和压缩技术的实现 #### 2.1 主存储场景的特点 主存储场景相较于...
4. **IO操作**:如读写文件、复制文件、删除文件等,这些常用操作可以通过工具类简化。`readFileToString`和`writeStringToFile`就是两个典型的例子。 5. **数组操作**:数组的排序、查找、拷贝等也是常用的工具...
`distinct`方法也是一个中间操作,它可以去除流中的重复元素。在给定的代码示例中,通过调用`distinct()`方法,用户列表中的重复用户被过滤掉,最终收集到的新列表中不包含重复的用户对象。 `sorted`方法是另一个...
1. **Hibernate离线查询去除重复项**:在Hibernate中,使用Criteria API时,可以设置ResultTransformer为`Criteria.DISTINCT_ROOT_ENTITY`来去除查询结果中的重复实体。 2. **HTTP与SMTP协议及端口**:HTTP是用于...
6. 集合操作的使用和注意事项:UNION、UNION ALL、INTERSECT 和 MINUS 都是SQL中的集合操作,它们各自有不同的特性,如是否自动去除重复记录、是否可以排序等。特别是使用ORDER BY子句时,需要放在整个集合操作的...
在Hibernate中,使用dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)可以去除重复项。 2. HTTP协议及端口、SMTP协议及端口 HTTP(HyperText Transfer Protocol)是一种超文本传输协议,使用80端口。SMTP...
2. 文件I/O操作:Java的`java.io`包提供了处理文件输入输出的类和接口。在这个项目中,需要读取图像文件并将其转化为可以进行哈希计算的形式。这可能包括使用`FileInputStream`、`BufferedImage`等类来读取和处理...
这些工具类通常涵盖了字符串处理、日期时间操作、数学计算、IO流操作、集合框架操作等多个方面。下面将详细阐述这些知识点。 1. **字符串处理**: - `trim()`: 去除字符串两端的空白字符。 - `isEmpty()`: 检查...
7. 文件操作:System.IO命名空间提供了丰富的类,如FileStream、StreamReader和StreamWriter,用于读写文件。文件操作通常涉及打开、关闭、读取、写入和追加等操作。 8. 枚举与结构:枚举(enum)用于定义一组相关...
4. IO操作:文件读写、网络通信等辅助方法。 5. 其他实用功能:如生成随机数、计算哈希值、校验输入有效性等。 `Utils` 类的一个优秀实践是遵循单一职责原则,每个方法专注于完成一个特定的任务,这样可以提高代码...
14. SQL 无重复元组:在 SQL 中,`DISTINCT` 关键字用于检索去除重复记录后的结果。 15. 完全二叉树:在一个完全二叉树中,如果一个节点没有左子节点或右子节点,那么它必然是叶子节点。 16. 光盘存储:VCD 和 DVD...