Как прочитать файл .txt с несколькими строками? - PullRequest
0 голосов
/ 31 мая 2019

Я хочу сохранить свои данные в текстовом файле. В другом упражнении я хочу прочитать сохраненные данные. Я хочу каждый раз сохранять многозначные значения и помещать их вместе в строку, следующие значения должны быть в новой строке. Я попытался \n System.getProperty("line.separator"); System.lineSeparator(); и \n\r начать с новой строки, но, похоже, это не работает, пока данные остаются друг за другом, а не на другой строке.

Я использую этот код для записи в файл:

Context context = getApplicationContext();
writedatatofile(context);

protected void writedatatofile(Context context){
        try
        {
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput("data_log.txt", Context.MODE_APPEND));
            String data;
            if (newstart){
                data = "Exersice started \n" + "t.s a.s t.a a.a cnst";
            } else {
                data = (Integer.toString(time_step)+Integer.toString(new_average_step)+Integer.toString(time_footaid)+Integer.toString(new_average_aid)+Boolean.toString(rhythmconsistent)+"\n");
            }
            outputStreamWriter.append(data);
            outputStreamWriter.close();
            Toast.makeText(this, "Data has been written to File", Toast.LENGTH_SHORT).show();
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    }

и этот код для чтения файла:

Context context = getApplicationContext();
String fileData = readFromFile(context, fileName);
TextView datalog = findViewById(R.id.datalog);
datalog.setText(fileData);

private String readFromFile(Context context, String fileName){
        String ret = " ";
        try {
            InputStream inputStream = context.openFileInput(fileName);
            if (inputStream != null) {
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
                BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
                String receiveString = "";
                StringBuilder stringBuilder = new StringBuilder();
                while ((receiveString = bufferedReader.readLine()) != null) {
                    Toast.makeText(this, "Data received", Toast.LENGTH_SHORT).show();
                    stringBuilder.append(receiveString);
                }
                inputStream.close();
                ret = stringBuilder.toString();
            } else {
                Toast.makeText(this, "No data received", Toast.LENGTH_SHORT).show();
            }
        } catch (FileNotFoundException e){
            Toast.makeText(this, "File not found", Toast.LENGTH_SHORT).show();
        } catch (IOException e){
            Toast.makeText(this, "Can not read file", Toast.LENGTH_SHORT).show();
        }
        return ret;
    }

Как уже упоминалось, \ n не решает проблему, но также не отображается в моих данных как \ n. Поэтому он не сохраняется как обычная строка.

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Вы можете прочитать данные из файла .txt, используя следующий код.

  File exportDir = new File(Environment.getExternalStorageDirectory(), File.separator + "bluetooth/abc.txt");

        if (exportDir.exists()) {
            FileReader file = null;
            try {
                file = new FileReader(exportDir);

                BufferedReader buffer = new BufferedReader(file);
                String line = "";
                int iteration = 0;
                while ((line = buffer.readLine()) != null) { //read next line
                    if (iteration == 0) { //Skip the 1st position(header)
                        iteration++;
                        continue;
                    }
                    StringBuilder sb = new StringBuilder();
                    String[] str = line.split(",");

                    //get the single data from column
                   String text1 = str[1].replace("\"", "");
                   String text2 = str[2].replace("\"", "");



                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

0 голосов
/ 02 июня 2019

Когда вы пишете файл:

BufferedWriter writer = new BufferedWriter(outputStreamWriter);
writer.write(data);
writer.newLine(); // <-- this is the magic
writer.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...