一、接收文件
1.Controller层接收文件
//Controller层接收文件
@RestController
@RequestMapping("sync")
@Log4j2
public class SyncPhoneController {
@Autowired
SyncPhoneService syncPhoneService;
@PostMapping("/syncPhone")
public ResultModel syncPhone(@RequestPart ("file")MultipartFile file) throws Exception{
//用 @RequestPart ("file") MultipartFile file 接收数据
//也可以用 @RequestParam (name = "file") MultipartFile file 接收数据
syncPhoneService.syncPhone(file);
//将文件传入到Service层
return ResultModel.success("同步成功");
}
}
2.Service层处理文件
(1).读取excel文件
只是单纯的读取每一行的数据
public List<String> readExcel(MultipartFile file) throws Exception{
// 创建一个字符串向量
Vector<String> v = new Vector<>();
// 获取文件输入流
InputStream inputStream = file.getInputStream();
// 创建Excel工作簿对象
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
// 获取工作表对象
XSSFSheet sheet = workbook.getSheetAt(0);
// 获取工作表中的行数
int numberOfRows = sheet.getPhysicalNumberOfRows();
// 循环遍历每一行
for (int i = 0; i < numberOfRows; i++) {
// 获取当前行
XSSFRow row = sheet.getRow(i);
// 获取第一列单元格的原始值并添加到向量中
v.add(row.getCell(0).getRawValue());
}
//关闭流
if (inputStream !=null){
inputStream.close();
}
// 返回字符串向量
return v;
}
(2) 读取txt文件
只是单纯的读取每一行的数据
public ResultModel readTxtWords(MultipartFile file) throws IOException {
// 获取文件输入流
InputStream inputStream = file.getInputStream();
// 使用 InputStreamReader 将字节流转换为字符流,再用 BufferedReader 包装字符流,便于逐行读取文本
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
// 创建一个存储敏感词的 ArrayList
ArrayList<String> sensitiveWords = new ArrayList<>();
// 逐行读取文本文件内容,并将每行敏感词添加到列表中
for (String txt = null; (txt = bufferedReader.readLine()) != null;) {
sensitiveWords.add(txt);
}
// 关闭输入流
inputStream.close();
// 返回包含敏感词列表的 ResultModel 对象
return ResultModel.success(sensitiveWords);
}
(3) 通过本地路径获取到文件
public ResultModel readTxtWords() throws IOException {
// 定义文件路径
String path = "..";
// 使用 BufferedReader 读取文件内容
BufferedReader bufferedReader = new BufferedReader(new FileReader(path));
// 创建一个存储敏感词的 ArrayList
ArrayList<String> sensitiveWords = new ArrayList<>();
// 逐行读取文本文件内容,并将每行敏感词添加到列表中
for (String txt = null; (txt = bufferedReader.readLine()) != null;) {
sensitiveWords.add(txt);
}
// 关闭输入流
inputStream.close();
// 返回包含敏感词列表的 ResultModel 对象
return ResultModel.success(sensitiveWords);
}