我有一个名为" q.txt"的文本文件。我想读取,并根据ID(主键),我想选择与之关联的字符串。
例如0014,<Random string here>
到目前为止,我已经创建了一个获取#### ID的方法。现在我需要扫描文件并找到相应的字符串并将其输出到textview。
我遇到的问题是FileNotFoundException和IOException。那么我在哪里放置文本文件,所以我不需要添加一个完整的路径(例如D:\ Projects \ ... \ q.txt),但只是&#34; q.txt&#34;?
如何浏览文件以便随机挑选问题?
如果使用数组,我还需要它是动态的。
答案 0 :(得分:0)
鉴于您的文件中包含以下内容:
id,question
0001,Some Question?
....
0014,Foo Bar?
...
9999,Last question?
然后,您必须将文件的每一行解析为两个单独的字段。一个用于存储id,另一个用于存储问题。您已使用randomID()
方法获取随机ID,因此在onClick()
方法中,请调用randomID()
获取随机ID并将其传递给loadDatabase()
方法在文件中搜索该随机ID。 请注意,随机ID必须存在于您的文件中。
找到随机ID后,请将问题设置为TextView
。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view) {
String id = randomID();
loadDataBase(id);
}
public String randomID() {//generates an ID for the next question ####
String id;
int questionID;
int challenge;
Random ran = new Random();
int randomChallenge = ran.nextInt(5);
if (randomChallenge == 0) {
challenge = 2;
questionID = ran.nextInt(12);
} else {
challenge = 0;
questionID = ran.nextInt(103);
}
id = Integer.toString(challenge) + String.format("%03d", questionID);
return id;
}
public void loadDatabase(String id) {
BufferedReader br;
try {
br = new BufferedReader(new FileReader("q.txt"));
while ((br.readLine()) != null) {
String lineParsed = br.readLine().split(',');
if(lineParsed[0] == id) {
someTextView.setText(lineParsed[1]);
}
}
br.close();
} catch (FileNotFoundException e) {
System.err.println("File not found: " e.getMessage());
} catch (IOException e) {
System.err.println("IOException: " e.getMessage());
}
}
答案 1 :(得分:0)
试试这个: 1.对于文件的路径。
Mobile App
2。如果你想随机选择一行:
String basePath = new File("").getAbsolutePath();//this will get the path of the class of your program.
try{
BufferedReader strReader = new BufferedReader(new FileReader(basePath+"\\nameOfYourFile.extension"));//this will find your file
}catch(FileNotFoundException | IOException e){
//e
}
输出: 文件的1个随机行