1

以下のコードは、番号のないファイルの最後まで次の行を読み取り(ファイル内の行には番号がありません)、完全に正常に機能します。次に、前の行を読み取ります(逆方向に読み取ります)。可能であれば、シャッフルします(ランダムな行を読みます)。

次に例を示します。

InputStream in;
BufferedReader reader;
String qline;

    try {
        in = this.getAssets().open("quotations.txt");       
        reader = new BufferedReader(new InputStreamReader(in));
        qline = reader.readLine();
        quote.setText(qline);

           } 
            catch (IOException e) {
            // TODO Auto-generated catch block
           e.printStackTrace();
                              }

onClickメソッドの中に、次のボタンがあります

    //code
    else if (v.getId() == R.id.next) {


        try{
     if (( qline = reader.readLine()) != null) {
            // myData = myData + qline;


                  quote.setText(qline);
                          }

          } catch (java.io.FileNotFoundException e) {
            // do something if the myfilename.txt does not exits

          } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

 else if (v.getId() == R.id.back) {

// code for the back option

    }
4

1 に答える 1

1

私のライブラリ FileReader を使用するか、必要な機能に合わせて変更できます。

// FileReader, Khaled A Khunaifer

public class FileReader
{
    public static ArrayList<String> readAllLines (String path)
    {
        ArrayList<String> lines = new ArrayList<String>();
        InputStream fis;
        BufferedReader br;
        String line;

        try
        {
            fis = new FileInputStream(path);
            br = new BufferedReader(new InputStreamReader(fis, Charset.forName("UTF-8")));

            while ((line = br.readLine()) != null)
            {
                lines.add(line);
            }
        }
        catch (Exception e)
        {
            e.printStackTrace()
        }

        return lines;
    }

    // NOTE: LINE NUMBERS START FROM 1
    public static ArrayList<String> readLines (String path, long from, long to)
    {
            ArrayList<String> lines = new ArrayList<String>();
        long k = 1;
        InputStream fis;
        BufferedReader br;
        String line;

        try
        {
            fis = new FileInputStream(path);
            br = new BufferedReader(new InputStreamReader(fis, Charset.forName("UTF-8")));

            do
            {
                    line = br.readLine(); // read line k

                    if (k >= from)
                    {
                        if (k > to) break; // STOP

                        lines.add(line);
                    }

                k++;
            }
            while (line != null);
        }
        catch (Exception e)
        {
            e.printStackTrace()
        }

        return line;
    }

    // NOTE: LINE NUMBERS START FROM 1
    public static String readLine (String path, long i)
    {
        long k = 1;
        InputStream fis;
        BufferedReader br;
        String line;

        try
        {
            fis = new FileInputStream(path);
            br = new BufferedReader(new InputStreamReader(fis, Charset.forName("UTF-8")));

            do
            {
                    line = br.readLine(); // read line k

                    if (k == i)
                    {
                        break;
                    }

                k++;
            }
            while (line != null);
        }
        catch (Exception e)
        {
            e.printStackTrace()
        }

        return line;
    }
}
于 2013-03-29T14:22:02.933 に答える