Как вернуть созданный файл во время исполнения программы?
В методе я получаю файл, обрабатываю его и возвращаю обработанный файл. Но если файла при компиляции нет, то мне выдает FileNotFoundException. Можно ли как то это исправить?
package regtab.server.service;
import com.regtab.core.model.ITable;
import com.regtab.core.model.Recordset;
import com.regtab.core.readers.CSVReader;
import com.regtab.core.rtl.interpreter.RTLPattern;
import com.regtab.core.writers.CSVWriter;
import lombok.RequiredArgsConstructor;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@Service
@RequiredArgsConstructor
public class UploadService {
private static final String UPLOADED_FOLDER = "src/main/resources/files/in/";
private static final String PROCESS_FOlDER = "src/main/resources/files/";
private final ResourceLoader resourceLoader;
public ResponseEntity<Resource> uploadFile(MultipartFile file, String rtl) throws IOException {
String fileName = file.getOriginalFilename();
if (file.isEmpty()) {
throw new RuntimeException();
}
try {
byte[] bytes = file.getBytes();
Path path = Paths.get(UPLOADED_FOLDER + fileName);
Files.write(path, bytes);
return processFile(fileName, rtl);
} catch (IOException e) {
throw new RuntimeException();
}
}
private ResponseEntity<Resource> processFile (String fileName, String rtl) throws IOException {
CSVReader csvReader = new CSVReader(UPLOADED_FOLDER + fileName);
ITable table = csvReader.read();
RTLPattern.apply(rtl, table);
Recordset recordset = table.extract();
CSVWriter csvWriter = new CSVWriter(PROCESS_FOlDER + "result.csv");
csvWriter.write(recordset);
return returnResult();
}
private ResponseEntity<Resource> returnResult() throws FileNotFoundException {
Resource resource = resourceLoader.getResource("classpath:files/result.csv");
return ResponseEntity.ok()
.header("Content-Disposition", "attachment; filename=\"" + resource.getFilename() + "\"")
.body(resource);
}
}