我正在尝试做一些类似的事情:
public void onClick(View v) {
WebServiceC webService = WebServiceC();
epubDownloaded = webService.downloadEpub(publi.getId());
File fileEpub=new File(Environment.getExternalStorageDirectory(), "test.epub");
if (fileEpub.exists()) {
fileEpub.delete();
}
try {
FileOutputStream fos=new FileOutputStream(arquivoEpub.getPath());
fos.write(epubDownloaded);
fos.close();
}catch (IOException e) {
e.printStackTrace();
}
}
});
但它不起作用。
致命异常:位于的主java.lang.NullPointerExceptionjava.io.OutputStream.write(OutputStream.java:82)
------------------------------------编辑------------------------------------------谢谢我用这种方式解决了我的问题->
int count;
WebServiceC webService = new WebServiceC();
epubDownloaded = webService.downloadEpub(publi.getId());
InputStream input = new ByteArrayInputStream(epubDownloaded);
OutputStream output = null;
try {
output = new FileOutputStream(Environment.getExternalStorageDirectory()+"/test.epub");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
byte data[] = new byte[1024];
try {
while ((count = input.read(data)) != -1) {
output.write(data, 0, count);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
在您的代码中,我唯一能看到可以抛出的NullPointerException
的位置是FileOutputStream fos=new FileOutputStream(arquivoEpub.getPath());
行。
FileOutputStream
的构造函数唯一可以抛出NullPointerException
的时间是通过其构造函数FileOutputStream(FileDescriptor fdObj)
向其传递null值。我不知道函数arquivoEpub.getPath()
返回了什么,所以我不能做任何其他猜测。
此外,如果可能的话,准确地公布哪一行对应于第82行,因为这是引发异常的行。