java-字节流复制图片的问题,报错,复制失败,图片损坏而且为0 kb

问题描述

字节流复制图片的问题,报错,复制失败,图片损坏而且为0 kb

import java.io.*;
class Lee{
public static void main (String[] args){
FileOutputStream fos=null;
FileInputStream fis=null;
try{
fos=new FileOutputStream("D:毕向东视频9.png");
fis=new FileInputStream("D:毕向东视频99.png");
byte [] buf=new byte[1024];
int len=0;
while((len=fis.read(buf))!=-1)
{
fos.write(buf,0,len);

        }
       }
    catch(IOException e){
        throw new RuntimeException("复制失败");
    }
    finally{
            try{
                if(fis!=null)
                fis.close();

                }
            catch(IOException e){
                throw new RuntimeException("读取失败");
            }
        }
    }
}

解决方案

首先,你的文件路径有问题,编译出错,尽量使用/这个而不是反斜杠,因为反斜杠是转义字符。
其次,在你的异常分支打印堆栈信息,便于排错。throw new RuntimeException("复制失败");这句话抛出之前先打印e.printStackTrace();

解决方案二:

急求大神指点,谢谢了

解决方案三:

 这路径写法编译不报错?应该得2个
 fos=new FileOutputStream("D:\毕向东视频\9.png");
fis=new FileInputStream("D:\毕向东视频\99.png");

解决方案四:

不要写绝对路径,而且路径中最好不要带中文,复制的话 我建议字节流,因为字符流 一次读两个字节,有可能碰到结尾是单字节 就会出错!

解决方案五:

补充一下,你检查下图片的大小,如果超过1M,那么你使用1024字节的缓冲区就可能使文件受损的。
修正代码如下:

 class Lee {
    public static void main(String[] args) {
        FileOutputStream fos = null;
        FileInputStream fis = null;
        try {
            fos = new FileOutputStream("D:/copy.jpg");
            fis = new FileInputStream("D:/照片打印/picture2.jpg");
            byte[] buf = new byte[2048];
            int len = 0;
            while ((len = fis.read(buf)) != -1) {
                fos.write(buf, 0, len);
            }
            fos.flush();
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException("复制失败");
        } finally {
            try {
                if (fis != null)
                    fis.close();
                fos.close();
            } catch (IOException e) {
                throw new RuntimeException("读取失败");
            }
        }
    }
}
时间: 2024-09-07 12:10:26

java-字节流复制图片的问题,报错,复制失败,图片损坏而且为0 kb的相关文章

一个简单不报错的summernote 图片上传案例_javascript技巧

一个比较完整的summernote上传图片的案例,没有后台(上传图片网上案例太多),只有前端js.修正了网上提供的,但是有bug的代码. 这个例子,js保证不报错.亲测可用 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html > <html> <head&

求助:summernote+spring mvc图片上传报错

问题描述 求助:summernote+spring mvc图片上传报错 先是controller代码: @ResponseBody @RequestMapping("/sumimg.do") public Result upload(HttpServletRequest request) { Result result = new Result(); // 转换为文件类型的request MultipartHttpServletRequest multipartRequest = (M

php图片上传报错error=3

问题描述 php图片上传报错error=3 upload: <?php/** Created by PhpStorm. User: rosen Date: 15-11-5 Time: 下午8:43*/print_r($_FILES['file']); ?> 为什么程序运行结果报错Array ( [name] => 2015-10-19 18:47:42屏幕截图.png [type] => [tmp_name] => [error] => 3 [size] => 0

android-Android 图片上传报错

问题描述 Android 图片上传报错 解决方案 看一下AsyncHttpRequestjava文件的147行,178行,109行有没有错,调试跟踪下: 解决方案二: 你首先看一下是不是你Android端的问题,还是服务端的问题. 解决方案三: 参考: http://bbs.anzhuo.cn/thread-941870-1-1.html

文件传输-java使用SSH方式上传报错:Algorithm negotiation fail

问题描述 java使用SSH方式上传报错:Algorithm negotiation fail java用jsch实现文件传输(SSH形式),但是好像本地和服务器加密方式不一致,一直报错: com.jcraft.jsch.JSchException: Algorithm negotiation fail 解决方案 如果是已form表单中的上传.需要改form的属性enctype( 属性规定在发送到服务器之前应该如何对表单数据进行编码.) 改属性默认值:application/x-www-form

android-安卓开发为何R.java自动生成的ID会报错?

问题描述 安卓开发为何R.java自动生成的ID会报错? 我在string.xml文件里添加了一个字符串,Name是数据结构,Value也是数据结构,但是编译的时候就R.java里的这个ID报错了,它自动生成的ID里有一个不知什么符号所以就被报错了,请问如何解决? 它自动生成的ID是 public static final int 鎷夊厠涓?=0x7f050003; 解决方案 是不是乱码呀,你自己检查一下你的字符串有没有问题吧,再clean一下 解决方案二: 你编码改成**UTF-8**

c#-用windows服务去云上面下载图片的时候报错如下

问题描述 用windows服务去云上面下载图片的时候报错如下 System.ArgumentException: URI formats are not supported. at System.IO.Path.NormalizePath(String path Boolean fullCheck Int32 maxPathLength) at System.IO.Path.GetFullPath(String path) at System.Drawing.IntSecurity.Unsafe

ajax-Bootstrap插件File Input图片上传报错?怎么解决

问题描述 Bootstrap插件File Input图片上传报错?怎么解决

plugins-kettle直接执行hbase作业能成功,但通过java程序来执行时却报错

问题描述 kettle直接执行hbase作业能成功,但通过java程序来执行时却报错 ERROR 13-12 17:04:32,359 - 174_kettle - 一个数据库错误发生在从资源库文件读取转换时 org.pentaho.di.core.exception.KettleStepLoaderException: Unable to load class for step/plugin with id [HBaseOutput ]. Check if the plugin is avai