Передать данные в FileReader в java - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь прочитать файл CSV из поля ввода текста в jsp. Но на сервере я получаю сообщение об ошибке

java .io.FileNotFoundException: csv_file.csv (разрешения на доступ к файлу не разрешают указанное действие.)

Is Есть ли другой хороший способ передать контекст файла в FileReader?

if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {

    DataInputStream in = new DataInputStream(request.getInputStream());

    int formDataLength = request.getContentLength();
    byte dataBytes[] = new byte[formDataLength];
    int byteRead = 0;
    int totalBytesRead = 0;

    while (totalBytesRead < formDataLength) {
    byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
    totalBytesRead += byteRead;
    }
    String file = new String(dataBytes);
    String saveFile = file.substring(file.indexOf("filename=\"") + 10);

    saveFile = saveFile.substring(saveFile.lastIndexOf("\\")+ 1,saveFile.indexOf("\""));

    if(saveFile != null && !saveFile.isEmpty()) {

    saveFile = file.substring(file.indexOf("filename=\"") + 10);
    saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
    saveFile = saveFile.substring(saveFile.lastIndexOf("\\")+ 1,saveFile.indexOf("\""));
    int lastIndex = contentType.lastIndexOf("=");
    String boundary = contentType.substring(lastIndex + 1,contentType.length());
    int pos;

    pos = file.indexOf("filename=\"");
    pos = file.indexOf("\n", pos) + 1;
    pos = file.indexOf("\n", pos) + 1;
    pos = file.indexOf("\n", pos) + 1;
    int boundaryLocation = file.indexOf(boundary, pos) - 4;
    int startPos = ((file.substring(0, pos)).getBytes()).length;
    int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;

    FileOutputStream fileOut = new FileOutputStream(saveFile);
    fileOut.write(dataBytes, startPos, (endPos - startPos));

    CSVParser csvParser = new CSVParser(new FileReader(saveFile),CSVFormat.DEFAULT.withHeader(FILE_HEADER_MAPPING));
    List<CSVRecord> csvRecords = csvParser.getRecords(); 
...