Чтение и запись CSV из / в путь

Я хотел бы напечатать построчно файл, расположенный в каком-то каталоге, с:

private void readWeatherDataByColumn() {

    FileInputStream is = null;

    try {
        is = new FileInputStream(sourceDirectory);

        String line = "";

        BufferedReader br = new BufferedReader(
                new InputStreamReader(is, "UTF-8"));

        while ((line = br.readLine()) != null) {

            System.out.println(line);
        }
    } catch (IOException e) {
        // Prints throwable details
        e.printStackTrace();
    }
}

Получаю следующий результат:

05-21 20:13:42.018 4170-4170/com.soialab.askaruly.camera_sensor I/System.out: ������ ftypisom������isomiso2avc1mp41������

У кого-нибудь есть подсказки?

Это должно быть выведено

05-22 17:13:22.676 5955-5955/com.soialab.askaruly.camera_sensor I/System.out: 1,22:28:23,42,92,66,224,40,0.28,0.02,0.05 05-22 17:13:22.677 5955-5955/com.soialab.askaruly.camera_sensor I/System.out: 2,22:28:24,48,92,191,224,64,0.28,0.02,0.05

отметьте этот ответ stackoverflow.com/questions/24259337/…

hasan_shaikh 21.05.2018 13:28

Вы можете показать нам, как должен выглядеть результат? Вне моей головы это похоже на какую-то проблему с кодировкой.

Tim Biegeleisen 21.05.2018 13:29
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
610
2

Ответы 2

Add the below code where you want to read CSV file.

String csvFileString = readFile(selectedFile.getAbsolutePath()); // path of you selected CSV File
InputStream stream = null;
try {
            stream = new ByteArrayInputStream(csvFileString.getBytes(StandardCharsets.UTF_8.name()));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
 }
ReadCsv csv = new ReadCsv(stream);
List<String[]> results = new ArrayList<String[]>();
results = csv.read();



 public static String readFile(String theFilePathString) {
        String returnString = "";
        try {
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(new FileInputStream((theFilePathString)), "UTF8"));
            String line = null;
            StringBuilder stringBuilder = new StringBuilder();
            String ls = System.getProperty("line.separator");

            while ((line = reader.readLine()) != null) {
                stringBuilder.append(line);
                stringBuilder.append(ls);
            }
            reader.close();
            returnString = stringBuilder.toString();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (NullPointerException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return returnString;
    }

ReadCsv.Class

public class ReadCsv {
    InputStream in;

    public ReadCsv(InputStream in) {
        this.in = in;
    }

    public List<String[]> read() {
        List<String[]> results = new ArrayList<String[]>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        try {
            String line;
            while ((line = reader.readLine()) != null) {
                String[] row = line.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");
                results.add(row);
            }
        } catch (IOException e) {
            throw new RuntimeException("Error reading CSV File " + e);
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                throw new RuntimeException("Error closing inputstream " + e);
            }
        }

        return results;
    }
}

Спасибо за комментарии и ответы!
Я разобрался в проблеме. Строка sourceDirectory относилась к видеофайлу, а не к исходному текстовому документу ".csv". Следовательно, возникла некоторая проблема с кодировкой, как упоминалось @ TimBiegeleisen.
Теперь он отлично работает с тем же кодом. Мое плохое, извините ...

Другие вопросы по теме