【发布时间】:2013-09-19 07:53:24
【问题描述】:
这是我的场景。
我有MainActivity.java,我在其中调用这样的线程
private void callXMLParserThread() {
String filePath = "file:///android_asset/weather_conditions.xml";
parserThread = new XMLParserThread(context, filePath);
parserThread.start();
}
这是我的XMLParserThread.java
public class XMLParserThread extends Thread {
Context context;
String fileName;
XMLParser xmlParser;
public XMLParserThread(Context context, String fileName) {
this.context = context;
this.fileName = fileName;
}
@Override
public void run() {
xmlParser = new XMLParser();
String xmlResponse = null;
try {
xmlResponse = xmlParser.getXmlFromFile(context, fileName);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("xmlResponse", xmlResponse + "");
super.run();
}
}
注意: 在 run() 方法中,我正在调用另一个方法 getXmlFromFile() 驻留在 XMLParser.java
现在这是我的getXmlFromFile() 方法。
public String getXmlFromFile(Context context, String fileName) throws IOException {
Log.e("fileName", fileName);
InputStream is = null;
try {
is = context.getAssets().open(fileName);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayOutputStream buf = new ByteArrayOutputStream();
int result = bis.read();
while(result != -1) {
byte b = (byte)result;
buf.write(b);
result = bis.read();
}
return buf.toString();
}
问题
当我执行代码时,它会抛出 java.io.FileNotFoundException: file:///android_asset/weather_conditions.xml at xml.parser.XMLParser.getXmlFromFile(XMLParser.java:43)
在我的 getXmlFromFile() 方法中,第 43 行是 is = context.getAssets().open(fileName);
另外,我确定该文件存在于资产文件夹中。我在哪里做错了?
【问题讨论】:
-
文件夹在哪里?我认为您的路径是绝对的,但是如果我没记错的话,应用程序将无法访问根文件夹。您可以查看文档:developer.android.com/training/basics/data-storage/files.html
标签: java android multithreading xml-parsing