libo19881179 2011-09-19 17:56
浏览 325
已采纳

提问:下载文件到sd卡 发现内容结尾不全或出现NUL!?

从自己的本机的tomcat上下载一个xml文件 到模拟器sd卡中打开 如下

本来这是个很简单的xml后面多了很多nul

所以解析时出现错误:



 在下载大的xml时出现结尾不全的情况 而且发现内容出现了一个像是乱码的东西:


我觉得是我的下载和写入sd卡的方法有问题 可是我查了很多还是没发现错误:

 

 

 

/**
     * 下载文件到sd
     * @param urlStr
     * @param path
     * @param fileName
     * @return 如果返回0成功  ;-1失败  
     */
    public int downFile(String urlStr,String path,String fileName){
        InputStream is = null;
        try {
            FileUtils fu = new FileUtils();
            //从URL获得输入流
            is = getISFromURL(urlStr);
            InputSource iSource = new InputSource(is); iSource.setEncoding("UTF-8");
            if(fu.isFileExist(path+fileName)){
                new  File(path+fileName).delete(); 
            }
                File resultFile = fu.write2SDFromIS(path, fileName, is);
                if(resultFile == null){
                    return -1;
                }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return -1;
        }finally{
            try {
                is.close(); 
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return 0;
    }

 

   /** is流写入sd卡
     * @param path
     * @param fileName 路径+名字
     * @param is
     * @return
     */
    public File write2SDFromIS(String path,String fileName,InputStream is){
        File file = null;
        OutputStream os = null;
        try {
            createSDDir(path);
            file = createSDFile(path+fileName);
            os = new FileOutputStream(file);
            
            byte buffer[] = new byte[4*1024];
            while(is.read(buffer) != -1){
                os.write(buffer);
            }
            os.flush();
        
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                os.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return file;
        
    }

 希望大家帮我发现错误 谢谢了~

  • 写回答

1条回答 默认 最新

  • Kevin_Leeee 2011-09-20 10:33
    关注

    我给你解决了,记得给我加分啊!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?