我正在尝试从设备外部目录中读取.json文件。
我有一个名为ExternalFile的类,用于读取文件并将内容作为字符串返回。
这是班级:
public class ExternalFile
{
final String EXTERNAL_STORAGE = Evironment.getExternalStorageDirectory().toString();
final String FIRSTDROID_DIRECTORY = EXTERNAL_STORAGE + "/firstdroid/";
final String SALES_DIRECTORY = FIRSTDROID_DIRECTORY + "sales/";
final String REFERENCE_DIRECTORY = FIRSTDROID_DIRECTORY + "reference/";
public String readFile(String direcectory, String fileName)
{
BufferedReader br;
StringBuilder sBuffer;
File JSON;
String line;
String retVal = null;
try
{
sBuffer = new StringBuilder();
JSON = new File(direcectory, fileName);
br = new BufferedReader(new FileReader(JSON));
while ((line = br.readLine()) != null)
{
sBuffer.append(line);
sBuffer.append('\n');
}
retVal = sBuffer.toString();
Log.d("File Results: ", retVal);
}
catch (Exception e)
{
Log.e("readJSON", e.getMessage());
}
return retVal;
}
}
当我使用这个类来读取“login.json”文件时,它工作正常。但是,当我使用该类读取“contacts.json”文件时,eclipse警告: “空指针访问:变量readJSON在此位置只能为null”。
private void getContactNames()
{
// File jsonCustomers;
// BufferedReader br= null;
// StringBuilder sb = null;
// String line;
String result;
ExternalFile readJSON = null;
try
{
result = readJSON.readFile(REFERENCE_DIRECTORY, "contacts.json");
// pass through the json string
readNames(result, "contact");
}
catch (Exception e)
{
messageBox("getCustomerNames", e.toString());
}
}
唯一的区别是我传入“contacts.json”而不是“login.json”
答案 0 :(得分:5)
如果您使用变量而没有初始化,Eclipse会发出警告。在您的代码中,您已声明readJSON
,但已初始化为null
。之后它被用在try
块内,这肯定会导致NPE
ExternalFile readJSON = null; //--> you have not intialized readJSON
try
{
result = readJSON.readFile(REFERENCE_DIRECTORY, "contacts.json");
^^^^^^^^
null access here