这是我的情景。
我有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)
我的is = context.getAssets().open(fileName);
方法
getXmlFromFile()
另外,我确定该文件存在于assets文件夹中。我在哪里弄错了?
答案 0 :(得分:1)
从资源定义路径时,只写入资产子文件夹的路径。
如果您的xml文件位于:
assets/android_asset/weather_conditions.xml
所以文件路径应该是:
String filePath = "android_asset/weather_conditions.xml";
顺便说一句,你的代码中有帮手:
is = context.getAssets().open(fileName);
context.getAssets()
表示打开assets
文件夹并找到其中的路径。
答案 1 :(得分:0)
如果我没有弄错的话,你可以在下面没有“file:/// ...”部分说出来。
String filePath = "weather_conditions.xml";