читать из файла и отображать случайную строку - PullRequest
3 голосов
/ 06 июля 2011

Я пытаюсь заставить мое приложение для Android читать из текстового файла, случайным образом выбирать запись и затем отображать ее. Как мне это сделать? Я думаю, что мне нужно использовать команды чтения буфера или входного потока, но я не знаю, как их использовать, я пробовал поискать в Google, но не нашел большой помощи.

Насколько я знаю (и с некоторой помощью) мне нужно прочитать текстовый файл, добавить его в строку? и используйте следующую команду для случайного выбора записи

Random.nextInt(String[].length-1).

Как мне это сделать? : \ im совершенно новый для всего этого буфера чтения и т. д.

Ответы [ 3 ]

6 голосов
/ 06 июля 2011

Вы просите о двух разных операциях здесь. Не затуманивайте проблему, путая их вместе. Вы хотите знать, как:

  1. Чтение файла с диска в группу строк.
  2. Произвольно выбрать 1 строку из группы строк.

    // Read in the file into a list of strings
    BufferedReader reader = new BufferedReader(new FileReader("inputfile.txt"));
    List<String> lines = new ArrayList<String>();
    
    String line = reader.readLine();
    
    while( line != null ) {
        lines.add(line);
        line = reader.readLine();
    }
    
    // Choose a random one from the list
    Random r = new Random();
    String randomString = lines.get(r.nextInt(lines.size()));
    
0 голосов
/ 09 августа 2012
/*This sample code shows how to read one term and its definition from
 the file using TextIO.
  The code just reads the term and the definition in to a String.
To read the whole file the simplest solution is to have an array
of String for the terms and an array of String for the definitions
and to ensure that you store the definition for a term at the same
index position in the definitions array as you store the term it
defines in the term array.

If you find that the TextIO window is too narrow to display the whole
of some of the lines of the definition on one line you can edit the text
file sothat each line contains fewer words (this may depend on your
screen resolution).

*/

public class Read from a txt file {


public static void main(String[]args){
    String term = "";
    String definition = ""; 
    TextIO.readFile("Your_file.txt");
    TextIO.putln("Just read this term from file: " + term);
    String str;
    do {
        str = TextIO.getln();
        definition = definition + str + "\n";
    } while (str.length() != 0);
    TextIO.putln(definition);
    // Once you have read all the file take input from keyboard:
    TextIO.readStandardInput();
}
}
0 голосов
/ 06 июля 2011

Вот небольшой код для чтения из текстового файла.Вам нужно будет изменить его так, чтобы он разбивался на концах строки, и, очевидно, было бы неплохо обратиться к TODO, но это должно помочь вам начать.

try
{
    InputStream is = new FileInputStream(m_file);

    if(m_is == null)
    {
        openInputStream();
    }
    StringBuilder sb = new StringBuilder();

    //TODO: get a buffered stream going, it should be more efficient
    byte[] buf = new byte[100];
    int readLen;
    while((readLen = is.read(buf, 0, 100)) != -1)
    {
        sb.append(new String(buf, 0, readLen));
    }

    closeInputStream();
    return sb.toString();
}
catch (FileNotFoundException e)
{
    //TODO: handle this
}
finally
{
    try
    {
        is.close();
    }
    catch (IOException e)
    {
    }
}
...