Я работаю над модулем, который принимает файл csv, загружает его внутрь в "C:/projectUpload/Upload"
.
Во-вторых, у меня есть метод parseCSVWithHeader(Class <T> class, String fileName)
, который будет читать содержимое файла и затем возвращать объект javaиз того же.
Теперь я немного запутался, у меня есть несколько вопросов относительно всей загрузки файлов и архитектуры чтения.Я получаю исключение NullPoiterException, так как new FIleReader(fileName)
не нашел ни одного файла.
Я отладил и обнаружил, что только имя файла передается в FileReader (i, e new.csv).Ожидает ли FileReader полного пути к файлу в строке?Если да, то по какому пути
Исходный случайный путь загрузки или путь, по которому мы решили сохранить на нем файлы?
Необходимо ли загружать входной файл пользователем в каком-либо другом месте?
КОД КОНТРОЛЛЕРА:
@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();
}
}
}
Я делаю вещи в правильном направлении или нет?