在Android Studio中读取内部文件

时间:2018-11-06 01:08:25

标签: java android file android-studio

我正在写入Android Studio中的内部文件

 String filename = "output.txt";
            String fileContents = studentNum + ", " + lastName + ", " + firstName + ", " + radioValue + ", " + spinnerInfo + "\n"; // edit this to include all content
            FileOutputStream outputStream;

            try{
                outputStream = openFileOutput(filename, Context.MODE_APPEND);
                outputStream.write(fileContents.getBytes());
                outputStream.close();
            } catch(Exception e){
                e.printStackTrace();
            }
        }

代码使我可以编写以逗号分隔的数据行。然后,我可以进行另一项活动,并一次阅读所有内容。

  String file = "output.txt";
        String line = "";
        String data = "";

        //File read operation
        try {
            FileInputStream fis = openFileInput(file);  //A FileInputStream obtains input bytes from a file in a file system
            InputStreamReader isr = new InputStreamReader(fis); //An InputStreamReader is a bridge from byte streams to character streams
            BufferedReader br = new BufferedReader(isr);    //Reads text from a character-input stream,
            while ((line = br.readLine()) != null) {
                data += (counter+1) + "\t"+ line +"\n";
                counter++;
            }
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }
        catch (IOException e){
            e.printStackTrace();
        }
        //Show the data
        txtOutput.setText(data);

但是,我希望每个活动只能读取一行数据,当我单击一个按钮时,它将向下传输到下一行数据。并进入轮播循环,因此一旦我们到达最后一行,再次单击该按钮,它将转到第一行数据

1 个答案:

答案 0 :(得分:0)

最简单的方法可能只是保留行号指针(因为您是按行读取),然后读取那么多行以获取每次活动所需的位置。如果文件很大,或者您对性能很敏感,那么这不是一个好选择。

InputStreamReader都具有skip(<bytes>)方法。您也可以那样做。显然,如果您使用流,则需要按字节读取而不是按行读取,因此麻烦得多。

您还可以使用具有RandomAccessFile方法的seek()。再次通过字节索引访问。