Android:获取原始文件夹中文本文件的行数

时间:2013-08-09 04:29:28

标签: java android

美好的一天!我一直在尝试创建一个函数,它将返回位于raw文件夹的文本文件中的行数,但我似乎总是得到0。

继承我正在使用的功能:

int getFileSize (InputStreamReader p_is) { 
        int lineCtr = 0;
        try {
            BufferedReader br = new BufferedReader(p_is);

            String theLine="";
            lineCtr = 0;
            while ((theLine = br.readLine()) != null)   {
                lineCtr++;
            }
        } catch (Exception e) {
                e.printStackTrace();
        }
        return lineCtr;

    }

然后我将可变大小传递给另一个活动:

    InputStreamReader is = new InputStreamReader(getResources().openRawResource(R.raw.sampleTxt));          
    int size = getFileSize(InputStreamReader is);

    intent.putExtra("v_size", size);
    startActivity(intent);

然后我在其他活动中检索它:

    fileSize = getIntent().getIntExtra("v_size",0);

当我尝试显示fileSize时,它总是显示0:

    message= (TextView) findViewById(R.id.tv_message);

    String strSize = Integer.toString(fileSize);
    message.setText(strSize);

我尝试在putExtra()中传递一个字符串,但它也显示为0.请更正您看到的任何错误,并感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这是你的行

int size = getFileSize(InputStreamReader is);

在那里不需要InputStreamReader,在编译代码时应该显示错误。不确定你是如何设法运行的。

所以你必须删除它,然后它应该能够读取你想要的行和计数。

或者当您将代码写入此处时,此getFileSize(InputStreamReader is)只是一个复制/粘贴错误?

答案 1 :(得分:0)

尝试使用此代码:

public static int countLine(String s){
    int ct=0;
    for(int i=0;i<s.length();i++){
        if(s.charAt(i)=='\n')
            ct++;
    }
    return ct;
}

String s是读取文本文件的结果,我尝试了这段代码,并且它正常工作