Чтение и запись CSV из / в путь - PullRequest
0 голосов
/ 21 мая 2018

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

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

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

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

0 голосов
/ 21 мая 2018

Добавьте приведенный ниже код для чтения файла CSV.

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...