Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 读取文件中的前一行_Android_Pointers_Random_File Handling - Fatal编程技术网

Android 读取文件中的前一行

Android 读取文件中的前一行,android,pointers,random,file-handling,Android,Pointers,Random,File Handling,我下面有一段代码,它可以读取一个未编号文件末尾的下一行(文件中的行没有编号),它工作得非常好。如果可能的话,洗牌(读随机线)。任何想法 以下是一个例子: InputStream in; BufferedReader reader; String qline; try { in = this.getAssets().open("quotations.txt"); reader = new BufferedReader(new InputStr

我下面有一段代码,它可以读取一个未编号文件末尾的下一行(文件中的行没有编号),它工作得非常好。如果可能的话,洗牌(读随机线)。任何想法

以下是一个例子:

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

    }

您可以使用my library 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;
    }
}
//文件阅读器,Khaled A Khunaifer
公共类文件读取器
{
公共静态ArrayList readAllLines(字符串路径)
{
ArrayList行=新的ArrayList();
输入流fis;
缓冲剂;
弦线;
尝试
{
fis=新文件输入流(路径);
br=新的BufferedReader(新的InputStreamReader(fis,Charset.forName(“UTF-8”));
而((line=br.readLine())!=null)
{
行。添加(行);
}
}
捕获(例外e)
{
e、 printStackTrace()
}
回流线;
}
//注:行号从1开始
公共静态ArrayList读线(字符串路径、长从、长到)
{
ArrayList行=新的ArrayList();
长k=1;
输入流fis;
缓冲剂;
弦线;
尝试
{
fis=新文件输入流(路径);
br=新的BufferedReader(新的InputStreamReader(fis,Charset.forName(“UTF-8”));
做
{
line=br.readLine();//读取第k行
如果(k>=from)
{
如果(k>to)中断;//停止
行。添加(行);
}
k++;
}
while(line!=null);
}
捕获(例外e)
{
e、 printStackTrace()
}
回流线;
}
//注:行号从1开始
公共静态字符串读取线(字符串路径,长i)
{
长k=1;
输入流fis;
缓冲剂;
弦线;
尝试
{
fis=新文件输入流(路径);
br=新的BufferedReader(新的InputStreamReader(fis,Charset.forName(“UTF-8”));
做
{
line=br.readLine();//读取第k行
如果(k==i)
{
打破
}
k++;
}
while(line!=null);
}
捕获(例外e)
{
e、 printStackTrace()
}
回流线;
}
}

您可以使用my library 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;
    }
}
//文件阅读器,Khaled A Khunaifer
公共类文件读取器
{
公共静态ArrayList readAllLines(字符串路径)
{
ArrayList行=新的ArrayList();
输入流fis;
缓冲剂;
弦线;
尝试
{
fis=新文件输入流(路径);
br=新的BufferedReader(新的InputStreamReader(fis,Charset.forName(“UTF-8”));
而((line=br.readLine())!=null)
{
行。添加(行);
}
}
捕获(例外e)
{
e、 printStackTrace()
}
回流线;
}
//注:行号从1开始
公共静态ArrayList读线(字符串路径、长从、长到)
{
ArrayList行=新的ArrayList();
长k=1;
输入流fis;
缓冲剂;
弦线;
尝试
{
fis=新文件输入流(路径);
br=新的BufferedReader(新的InputStreamReader(fis,Charset.forName(“UTF-8”));
做
{
line=br.readLine();//读取第k行
如果(k>=from)
{
如果(k>to)中断;//停止
行。添加(行);
}
k++;
}
while(line!=null);
}
捕获(例外e)
{
e、 printStackTrace()
}
回流线;
}
//注:行号从1开始
公共静态字符串读取线(字符串路径,长i)
{
长k=1;
输入流fis;
缓冲剂;
弦线;
尝试
{
fis=新文件输入流(路径);
br=新的BufferedReader(新的InputStreamReader(fis,Charset.forName(“UTF-8”));
做
{
line=br.readLine();//读取第k行
如果(k==i)
{
打破
}
k++;
}
while(line!=null);
}
捕获(例外e)
{
e、 printStackTrace()
}
回流线;
}
}

好的,你可以使用
Math.Random
输出所需范围的任意随机数。一旦你有了一个数字,就根据给定的随机数移动文件指针。这是你可以点击的链接。您可以使用
Math.Random
输出所需范围内的任意随机数。一旦您有了一个数字,请根据给定的随机数移动文件指针。这是你可以点击的链接。