0

再会!我一直在尝试创建一个函数,该函数将返回位于 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);

当我尝试显示文件大小时,它总是显示 0:

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

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

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

4

2 回答 2

2

这是你的线

int size = getFileSize(InputStreamReader is);

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

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

或者这getFileSize(InputStreamReader is)只是您在此处编写代码时出现的复制/粘贴错误?

于 2013-08-12T11:10:28.797 回答
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 是读取文本文件的结果,我试过这段代码,它工作正常

于 2013-08-12T11:50:02.827 回答