一个IO的问题,为什么用字节流复制文本文档能成功,复制图片却一直失败呢

张甲 2017-07-30 06:15:21
我知道复制文件有更方便的方法,但是我想知道下面这个程序错在哪里?复制txt文档没问题,但是复制jpg图片,总是会少好几个字节
,这是为什么呢?同样的方法,用字符流试了也是这样.



package tv.lufei.copy;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Test {
public static void main(String[] args) throws IOException {
//读取要复制的文件内容
File file = new File("F:\\测试\\1.jpg");
InputStream reader = new FileInputStream(file);
byte [] b = new byte[2560];
int len = 0;
StringBuilder sb = new StringBuilder();
while ((len = reader.read(b)) != -1) {

String str = new String(b, 0, len);

sb.append(str);
}
// 4.释放资源
reader.close();

//创建并复制文件

File copyFile = new File("F:\\测试\\2.jpg");
File m = copyFile.getParentFile();
if(!m.exists()) {
m.mkdirs();
System.out.println("创建了"+m+"文件夹");

}
if(!copyFile.exists()) {
copyFile.createNewFile();
System.out.println("创建了"+copyFile+"文件");
}

OutputStream os = new FileOutputStream(copyFile);
// 2.1 准备要写入的数据
String str = sb.toString();
// 2.2 将要写入的字符串转换为byte数组
byte[] bytes = str.getBytes();

os.write(bytes);//将字节数组全部写入

// 4.释放资源
os.close();
System.out.println("复制成功");


}
}
...全文
348 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39671115 2017-07-31
  • 打赏
  • 举报
回复
第一路径你的是中文,第二字节是针对的是.txt文本文件
李德胜1995 2017-07-31
  • 打赏
  • 举报
回复

File file = new File("F:\\测试\\1.jpg");
        InputStream reader = new FileInputStream(file);
        ByteArrayOutputStream bos=new ByteArrayOutputStream();
        byte [] b = new byte[2560];
        int len = 0;
        //StringBuilder sb = new StringBuilder();
        while ((len = reader.read(b)) != -1) {
 
            bos.write(b, 0, len);
        }
        //System.out.println(bos.toByteArray());
        bos.close();
        //System.out.println(sb.toString().getBytes().length);
        // 4.释放资源
        reader.close();
         
                 //创建并复制文件   
         
        File copyFile = new File("F:\\测试\\2.jpg");
        File m = copyFile.getParentFile();
        if(!m.exists()) {
            m.mkdirs();
            System.out.println("创建了"+m+"文件夹");
             
        }
        if(!copyFile.exists()) {
            copyFile.createNewFile();
            System.out.println("创建了"+copyFile+"文件");
        }
 
        OutputStream os = new FileOutputStream(copyFile);
        // 2.1 准备要写入的数据
        //String str = sb.toString();
        // 2.2 将要写入的字符串转换为byte数组
        byte[] bytes =bos.toByteArray();
        //System.out.println(bytes.length);
        os.write(bytes);//将字节数组全部写入
 
        // 4.释放资源
        os.close();
        System.out.println("复制成功");

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧