2 chenrenxiang chenrenxiang 于 2015.07.13 11:09 提问

Android FileNotFoundException

主要内容是:我自己配置了tomcat服务器,然后想通过程序下载服务器里面的文件。
总之是要哭了,弄了好久没没解决这个bug。
先上logcat吧:
图片说明

可以看到,我自己输出了一个 “from here”,来自下面这个方法
/**
* 通过服务器地址获取输入流InputStream
*/
public InputStream getInputStreamFromUrl(String urlStr) throws IOException {
URL url = null;
InputStream inputStream = null;
try {
urlStr=URLDecoder.decode(urlStr, "UTF-8");
url = new URL(urlStr);
HttpURLConnection urlConn = (HttpURLConnection) url
.openConnection();
inputStream = urlConn.getInputStream();

    } catch (IOException e) {
        // TODO Auto-generated catch blocks
        System.out.println("from here");
        e.printStackTrace();
    }
    return inputStream;
}

应该也就是说,错误出现在这个方法里面,但是呢,在下载这首歌之前我还下载了一个xml文件,而且文件是下载成功的。
服务器里面的文件如下:
图片说明
我在下载歌曲之前下载了resources.xml文件,文件下载成功。然后接着下载mp3文件和lrc文件,就会出现这个异常。找了一上午错了还是不能解决,求解答~~


5个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.13 11:18

看上去可能是文件编码问题,你的xml是英文,可以支持,但是mp3,lrc是中文,估计你的程序或者服务器支持有问题,所以找不到文件

oyljerry
oyljerry 回复chenrenxiang: windows文件系统是用的Unicode编码,所以你客户端传过来的路径要转换,从UTF8到Unicode
2 年多之前 回复
chenrenxiang
chenrenxiang 确实是文件名称的问题,把文件名改成英文就可以下载,但是如果要下载中文名称文件有什么解决措施吗?
2 年多之前 回复
chenrenxiang
chenrenxiang 但是我下载 You can'T... 这首歌的时候也会出错,而且已经将地址utf-8编码了呀。。
2 年多之前 回复
qq915845584
qq915845584   2015.07.13 11:59

用浏览器打开报错的那个地址可以下载吗?

qq915845584
qq915845584 服务器上用英文,下载后命名用中文。 或者在服务端收到请求的时候将编码改成utf8
2 年多之前 回复
chenrenxiang
chenrenxiang 我刚刚把 青山黛玛.mp3 名字改成 qsdm.mp3 就下载成功了,看来确实是文件命名问题,只是如果要下载中文名称文件或者其他名称的文件不知道怎么解决?
2 年多之前 回复
bhdgx
bhdgx   2015.07.13 12:52

你在客户端做了URL编码,在服务器端有没有做相应的解码操作

chenrenxiang
chenrenxiang 请问这个怎么做呢?
2 年多之前 回复
Arnold9009
Arnold9009   2015.07.13 13:36

差不多应该就是编码的问题

CSDNXIAON
CSDNXIAON   2015.07.16 15:25

android中奇怪的FileNotFoundException
android神奇的“FileNotFoundException”
Android Read FileNotFoundException
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片