黑马程序员技术交流社区
标题:
如何通过字符流将一个图片文件实现硬盘中的复制?
[打印本页]
作者:
胡建彪
时间:
2012-10-25 17:08
标题:
如何通过字符流将一个图片文件实现硬盘中的复制?
/*
* 将一个图片用字符流从硬盘的一个地方复制到另一个地方
*/
public class ExchangeIO {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\IOstream\\2.jpg")));// 将字节流转换成字符流读取。
BufferedWriter bwfos = new BufferedWriter(new FileWriter("c:\\dcache\\3.jpg"));
String str = null;
while((str=br.readLine())!=null){
bwfos.write(str);
bwfos.flush();
}
bwfos.close();
br.close();
}
}
想到有这样的一个需求,然后写了一下,能够实现 图片文件的复制,图片大小也没改变,但是我复制完后打不开 3.jpg,说此文件过大或者是已损坏。
求大神们来,看看究竟怎么回事?
作者:
鲁中需
时间:
2012-10-25 17:34
图片文件能用字符流吗?纯文本文件才能用字符流,像图片、MP3、电影之类的不能使用字符流,只能用字节流。
/*
复制一个图片
思路:
1,用字节读取流对象和图片关联。
2,用字节写入流对象创建一个图片文件。用于存储获取到的图片数据。
3,通过循环读写,完成数据的存储。
4,关闭资源。
*/
import java.io.*;
class CopyPic
{
public static void main(String[] args)
{
FileOutputStream fos = null;
FileInputStream fis = null;
try
{
fos = new FileOutputStream("c:\\2.bmp");
fis = new FileInputStream("c:\\1.bmp");
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("读取关闭失败");
}
try
{
if(fos!=null)
fos.close();
}
catch (IOException e)
{
throw new RuntimeException("写入关闭失败");
}
}
}
}
复制代码
作者:
胡建彪
时间:
2012-10-25 17:39
鲁中需 发表于 2012-10-25 17:34
图片文件能用字符流吗?纯文本文件才能用字符流,像图片、MP3、电影之类的不能使用字符流,只能用字节流。 ...
可以通过字符流来实现 图片 影像等的复制,可能需要用到 转换流
作者:
范贞亮
时间:
2012-10-25 18:14
哈哈 ,二楼正解哦, 图片肯定用字节流来读嘛 , 你还用字符流 , 你还转什么啊 , 你直接用字节流读取试下不就行了 ,
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,
而字节流处理单元为1个字节, 操作字节和字节数组 , 说神马都不如一试 , 楼主英明
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2