Browse Source

修改对于txt文件读取少与一百条数据单独做处理

java8
文宽 史 2 years ago
parent
commit
2b4dc77154
  1. 39
      src/main/java/com/xujie/sys/modules/reader/controller/GetInformationForExcelController.java
  2. 50
      src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java

39
src/main/java/com/xujie/sys/modules/reader/controller/GetInformationForExcelController.java

@ -9,8 +9,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;
@ -90,6 +92,43 @@ public class GetInformationForExcelController {
} catch (IOException e) {
e.printStackTrace();
}
// 源文件路径
String sourcePath = "E:\\file\\cs.tff";
// 目标文件夹路径
String destinationFolder = "E:\\info";
// 创建源文件对象和目标文件夹对象
File sourceFile = new File(sourcePath);
File destinationDir = new File(destinationFolder);
// 确保源文件存在且是文件
if (sourceFile.exists() && sourceFile.isFile()) {
// 确保目标文件夹存在且是目录
if (!destinationDir.exists()) {
destinationDir.mkdirs(); // 创建目标文件夹及其父目录
}
// 构建目标文件路径
String destinationPath = destinationFolder + File.separator + sourceFile.getName();
File destinationFile = new File(destinationPath);
try {
// 复制文件到目标文件夹
Files.copy(sourceFile.toPath(), destinationFile.toPath());
System.out.println("文件复制成功!");
// 删除源文件
if (sourceFile.delete()) {
System.out.println("源文件删除成功!");
} else {
System.out.println("源文件删除失败!");
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("文件操作出错:" + e.getMessage());
}
} else {
System.out.println("源文件不存在或不是文件。");
}
}
}

50
src/main/java/com/xujie/sys/modules/reader/service/impl/GetInformationForExcelServiceImpl.java

@ -120,24 +120,31 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
//txt(tff)不为空就做新增
if (CollectionUtils.isNotEmpty(txtName)) {
List<EquipmentDataDetail> equipmentDataDetails = saveTxt(txtName, excel, batchNo);
// 创建一个固定大小的线程池这里假设有10个线程
ExecutorService executor = Executors.newFixedThreadPool(equipmentDataDetails.size()/100);
int startList =0;
int endList=100;
for (int i = startList; i < equipmentDataDetails.size(); i= startList) {
if (endList>equipmentDataDetails.size()){
endList = equipmentDataDetails.size();
//如果需要新增的数量小于一百就直接新增,大于一百就做线程池新增
if (equipmentDataDetails.size()<100){
//批量新增
getInformationForExcelMapper.saveByExcels(equipmentDataDetails);
}else {
// 创建一个固定大小的线程池这里假设有10个线程
ExecutorService executor = Executors.newFixedThreadPool(equipmentDataDetails.size()/100);
int startList =0;
int endList=100;
for (int i = startList; i < equipmentDataDetails.size(); i= startList) {
if (endList>equipmentDataDetails.size()){
endList = equipmentDataDetails.size();
}
List<EquipmentDataDetail> details = equipmentDataDetails.subList(startList, endList);
startList=startList+endList;
endList=endList+endList;
executor.execute(()->{
//批量新增
getInformationForExcelMapper.saveByExcels(details);
});
}
List<EquipmentDataDetail> details = equipmentDataDetails.subList(startList, endList);
startList=startList+endList;
endList=endList+endList;
executor.execute(()->{
//批量新增
getInformationForExcelMapper.saveByExcels(details);
});
// 关闭线程池
executor.shutdown();
}
// 关闭线程池
executor.shutdown();
for (String s : txtName) {
deleteBypath( s, excel.getBackupFolderPath());
}
@ -164,19 +171,18 @@ public class GetInformationForExcelServiceImpl extends ServiceImpl<GetInformatio
try {
// 复制文件到目标文件夹
Files.copy(sourceFile.toPath(), destinationFile.toPath());
System.out.println("文件复制成功!");
log.info("文件复制成功!");
// 删除源文件
if (sourceFile.delete()) {
System.out.println("源文件删除成功!");
log.info("源文件删除成功!");
} else {
System.out.println("源文件删除失败!");
log.info("源文件删除失败!");
}
} catch (IOException e) {
System.out.println("文件操作出错:" + e.getMessage());
log.info("文件操作出错:" + e.getMessage());
}
} else {
System.out.println("源文件不存在或不是文件。");
log.info("源文件不存在或已删除。");
}
}

Loading…
Cancel
Save