我正在写入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);
但是,我希望每个活动只能读取一行数据,当我单击一个按钮时,它将向下传输到下一行数据。并进入轮播循环,因此一旦我们到达最后一行,再次单击该按钮,它将转到第一行数据
答案 0 :(得分:0)
最简单的方法可能只是保留行号指针(因为您是按行读取),然后读取那么多行以获取每次活动所需的位置。如果文件很大,或者您对性能很敏感,那么这不是一个好选择。
InputStream
和Reader
都具有skip(<bytes>)
方法。您也可以那样做。显然,如果您使用流,则需要按字节读取而不是按行读取,因此麻烦得多。
您还可以使用具有RandomAccessFile
方法的seek()
。再次通过字节索引访问。