无法从每行上带有ID的文本文件中读取

时间:2018-04-06 16:25:17

标签: java file text

我有一个名为&#34; q.txt&#34;的文本文件。我想读取,并根据ID(主键),我想选择与之关联的字符串。 例如0014,<Random string here>

到目前为止,我已经创建了一个获取#### ID的方法。现在我需要扫描文件并找到相应的字符串并将其输出到textview。

我遇到的问题是FileNotFoundException和IOException。那么我在哪里放置文本文件,所以我不需要添加一个完整的路径(例如D:\ Projects \ ... \ q.txt),但只是&#34; q.txt&#34;?

如何浏览文件以便随机挑选问题?

如果使用数组,我还需要它是动态的。

2 个答案:

答案 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个随机行