我正在尝试读取我的res / raw / friends.csv中的csv文件,并在我的数据库中按记录导入它。但是,我的函数的第3行似乎无法找到或打开文件并退出javaNULLPointerException。我该怎么办?
public void fillBase(SQLiteDatabase db){
BufferedReader in=null;
try {
in = new BufferedReader(new FileReader("raw/friends.csv"));
} catch (FileNotFoundException e) {
e.printStackTrace(); //end up going here!
}
String line = null;
try {
while ((line = in.readLine()) != null) {
String[] parts = line.split(",");
ContentValues values = new ContentValues();
values.put("Name", parts[0]);
// Insert the data into the database
db.insert(FRIENDS, null, values); // insert your table name
}
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
首先,你应该只有一个大的试试块而不是两个;如果第一个失败,第二个将始终失败,并出现NullPointerException。
其次,您无法使用文件名和路径访问Android应用中的资源。这仅适用于桌面Java程序。
相反,你必须使用getResources()。openRawResource()
这是您的代码的工作版本:
public void fillBase(SQLiteDatabase db){
try {
BufferedReader in= new BufferedReader(getResources().openRawResource(R.raw.friends));
String line = null;
while ((line = in.readLine()) != null) {
String[] parts = line.split(",");
ContentValues values = new ContentValues();
values.put("Name", parts[0]);
// Insert the data into the database
db.insert(FRIENDS, null, values); // insert your table name
}
} catch (IOException e) {
e.printStackTrace();
}
}