File,FileReader,BufferedReader在Android上返回null

时间:2011-10-05 18:06:36

标签: java android

我正在使用Java在Android中进行编程,我有两个分支:第一个是MainActivity.java,第二个是Tokenizer.java。在Tokenizer中,我使用File,FileReader和BufferedReader来读取txt文件。在本课程中,我使用下一个代码:

package net.try.........;
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import android.content.Context;

public class Tokenizer {
    BufferedReader br;
    FileReader fr;
    File f;

    public void leerPath ( ) {      

    try {
        f = new File("F:path...../file.txt");
        fr = new FileReader(f);
        br = new BufferedReader(fr);
    } 

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

当调试MainActivity“f”时,那些文件的路径是FileReader,然后显示f为null,所以br也是null。为什么在Java中使用代码有效但Java / Android有什么不合理的原因?

这是main activiti中的代码

public class MainActivity extends MapActivity {

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Tokenizer ob1=new Tokenizer();
ob1.leerPath();
}
}

1 个答案:

答案 0 :(得分:2)

问题是你已经声明了实例变量的加载,但是你声明了本地变量的加载它“隐藏”实例变量。您正在为局部变量赋值,但这根本不会影响实例变量。

此:

File f = new File("F:path...../file.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);

应该是:

f = new File("F:path...../file.txt");
fr = new FileReader(f);
br = new BufferedReader(fr);

这假设您确实想要它们是实例变量。为什么你还需要这三个?你只是需要你正在阅读的读者吗?