我正在研究接受csv文件的模块,并将其上传到"C:/projectUpload/Upload"
。
第二,我有方法parseCSVWithHeader(Class <T> class, String fileName)
,它将读取文件的内容,然后返回相同的java对象。
现在我有点困惑,我对整个文件上传和读取架构有一些疑问。我收到NullPoiterException,因为new FIleReader(fileName)
找不到任何文件。
我调试了一下,发现只有文件名被传递到FileReader(即new.csv)。 FileReader是否期望String中文件的整个路径。如果是,那么哪个路径
原始随机上载路径还是我们决定在其上存储文件的路径?
是否有必要由用户将输入的文件上传到其他目的地?
控制器代码:
@RequestMapping(value = "/save", method = RequestMethod.POST)
public void saveData(@ModelAttribute("fileInfo") UploadFileInfo fileInfo, HttpServletRequest request) throws IOException, MyExceptionHandler {
String filePath = fileUploadUtility.uploadFile(fileInfo.getUploadDocument().getFile().getBytes(), UploadPathEnum.SignedPDF, "ACR_" + fileInfo.getTableId() + "_" + "_" + System.currentTimeMillis() + ".csv");
List<UserInfo> info = new ArrayList<>();
info = readerUtil.parseCSVWithHeader(UserInfo.class,fileInfo.getUploadDocument().getFile().getName());
for(UserInfo user:info)
{
System.out.println("user id"+ user.getUserId());
System.out.println("user id"+ user.getFirstName());
System.out.println("user id"+ user.getLastName());
}
// System.out.println("file path is:" + filePath);
}
CSVReaderUtil
public class CSVReaderUtil {
// public CSVReaderUtil(FileReader fileReader, char par) {
// }
public static <T> List<T> parseCSVWithHeader(Class<T> cls, String fileName)
throws IOException {
CSVReader reader = null;
try {
reader = new CSVReader(new FileReader(fileName), ',');
MappingStrategy<T> beanStrategy = new HeaderColumnNameMappingStrategy<>();
beanStrategy.setType(cls);
CsvToBean<T> csvToBean = new CsvToBean<>();
List<T> emps = csvToBean.parse(beanStrategy, reader);
System.out.println(emps);
return emps;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
reader.close();
}
}
}
我在正确的方向上做东西吗?