提取文本型文件读取方法

This commit is contained in:
彭宇琦 2021-01-30 18:36:18 +08:00
parent 67ae27e866
commit 2e358d1f41
1 changed files with 146 additions and 0 deletions

View File

@ -0,0 +1,146 @@
package com.auxiliary.tool.file;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* <p><b>文件名</b>TextFileReadUtil.java</p>
* <p><b>用途</b>将存储在文件中的文本内容以字符串的形式拼接读取文件支持表格文件xls/xlsx/csv格式
* 文本文件doc/docx/txt格式若读取的文件为文本型文件则按行对表格内容进行拼接
* </p>
* <p><b>编码时间</b>2021年1月30日下午5:46:21</p>
* <p><b>修改时间</b>2021年1月30日下午5:46:21</p>
* @author 彭宇琦
* @version Ver1.0
* @since JDK 1.8
*
*/
public class TextFileReadUtil {
private TextFileReadUtil() {
}
/**
* 用于以行元素单位合并csv文件中的文本内容并以集合的形式返回
* @param file 待读取文件对象
* @return 合并后的文本集合
*/
public static List<String> mergeRowDataToCsv(File file) {
List<String> rowDataList = new ArrayList<>();
//调用列表型文件读取方式读取文件并将每行数据拼接成字符串返回
TableFileReadUtil.readCsv(file, false).rowStream()
.map(list -> {
StringBuilder text = new StringBuilder();
list.stream().map(str -> str.orElse("")).forEach(text::append);
return text.toString();
})
.forEach(rowDataList::add);
return rowDataList;
}
/**
* 用于以列元素单位合并csv文件中的文本内容并以集合的形式返回
* @param file 待读取文件对象
* @return 合并后的文本集合
*/
public static List<String> mergeColumnDataToCsv(File file) {
List<String> columnDataList = new ArrayList<>();
//调用列表型文件读取方式读取文件并将每行数据拼接成字符串返回
TableFileReadUtil.readCsv(file, false).columnForEach((title, value) -> {
StringBuilder text = new StringBuilder();
value.stream().map(str -> str.orElse("")).forEach(text::append);
columnDataList.add(text.toString());
});
return columnDataList;
}
/**
* 用于以行元素单位合并csv文件中所有的元素内容并以字符串的形式返回
* @param file 待读取文件对象
* @return 合并后的文本集合
*/
public static String mergeAllRowDataToCsv(File file) {
StringBuilder text = new StringBuilder();
mergeRowDataToCsv(file).forEach(text::append);
return text.toString();
}
/**
* 用于以列元素单位合并csv文件中所有的元素内容并以字符串的形式返回
* @param file 待读取文件对象
* @return 合并后的文本集合
*/
public static String mergeAllColumnDataToCsv(File file) {
StringBuilder text = new StringBuilder();
mergeColumnDataToCsv(file).forEach(text::append);
return text.toString();
}
/**
* 用于以行元素单位合并excel文件中的文本内容并以集合的形式返回
* @param file 待读取文件对象
* @return 合并后的文本集合
*/
public static List<String> mergeRowDataToExcel(File file, String sheetName) {
List<String> rowDataList = new ArrayList<>();
//调用列表型文件读取方式读取文件并将每行数据拼接成字符串返回
TableFileReadUtil.readExcel(file, sheetName, false).rowStream()
.map(list -> {
StringBuilder text = new StringBuilder();
list.stream().map(str -> str.orElse("")).forEach(text::append);
return text.toString();
})
.forEach(rowDataList::add);
return rowDataList;
}
/**
* 用于以列元素单位合并excel文件中的文本内容并以集合的形式返回
* @param file 待读取文件对象
* @return 合并后的文本集合
*/
public static List<String> mergeColumnDataToExcel(File file, String sheetName) {
List<String> columnDataList = new ArrayList<>();
//调用列表型文件读取方式读取文件并将每行数据拼接成字符串返回
TableFileReadUtil.readExcel(file, sheetName, false).columnForEach((title, value) -> {
StringBuilder text = new StringBuilder();
value.stream().map(str -> str.orElse("")).forEach(text::append);
columnDataList.add(text.toString());
});
return columnDataList;
}
/**
* 用于以行元素单位合并excel文件中所有的元素内容并以字符串的形式返回
* @param file 待读取文件对象
* @return 合并后的文本集合
*/
public static String mergeAllRowDataToExcel(File file, String sheetName) {
StringBuilder text = new StringBuilder();
mergeRowDataToExcel(file, sheetName).forEach(text::append);
return text.toString();
}
/**
* 用于以列元素单位合并excel文件中所有的元素内容并以字符串的形式返回
* @param file 待读取文件对象
* @return 合并后的文本集合
*/
public static String mergeAllColumnDataToExcel(File file, String sheetName) {
StringBuilder text = new StringBuilder();
mergeColumnDataToExcel(file, sheetName).forEach(text::append);
return text.toString();
}
}