黑马程序员技术交流社区
标题:
用缓冲区字节流复制图片
[打印本页]
作者:
唐志海
时间:
2014-1-20 18:51
标题:
用缓冲区字节流复制图片
本帖最后由 唐志海 于 2014-1-20 20:08 编辑
import java.io.*;
public class impageDemo
{
public static void main(String[] args)
{
BufferedReader bfr=null;
BufferedWriter bfw=null;
try
{
bfr=new BufferedReader(new InputStreamReader(new FileInputStream("g:\\11.jpg")));
bfw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\copy.jpg")));
String line=null;
while((line=bfr.readLine())!=null)
{
bfw.write(line);
bfw.flush();
}
}
catch(IOException e)
{
System.out.println(".........cuol ");
}
finally
{
try
{
bfr.close();
}
catch(IOException e)
{
}
try
{
bfw.close();
}
catch(IOException e)
{
}
}
}
}
复制代码
为什么复制的图片打不开。
作者:
黄晓鑫
时间:
2014-1-20 19:20
呵呵 你这个复制用的是字符流 定义一个int len = -1; 然后读到len里面 然后读一次就写一个 就可以了 而不是line=null 如果是=null是读取字符的 要不=-1
作者:
宋星
时间:
2014-1-20 19:33
因为不能用字符流处理媒体文件,像图片,电影等,媒体文件只用字节流复制,而字符流主要处理文本类数据。因为用字符流读一段数据,会去查编码表,如果对的上编码,则读取正确,否则会变成乱码,所以用字符流读取媒体文件会打不开。
代码改成这样既可:
import java.io.*;
public class impageDemo
{
public static void main(String[] args)
{
FileInputStream bfr=null;
FileOutputStream bfw=null;
try
{
bfr=new FileInputStream("g:\\11.jpg");
bfw=new FileOutputStream("D:\\copy.jpg");
char[] ch=new char[1024];
int len=0;
while((len=fr.read(ch))!=-1)
{
fw.write(ch,0,len);
fw.flush();
}
}
catch(IOException e)
{
System.out.println(".........cuol ");
}
finally
{
try
{
bfr.close();
}
catch(IOException e)
{
}
try
{
bfw.close();
}
catch(IOException e)
{
}
}
}
}
复制代码
作者:
panzhenglian
时间:
2014-1-20 19:46
末尾出是writer、reader的都是字符流,末尾处是OutputStream、InputStream的都是字节流,字符流不能操作图片数据,上面的哥们已近给出了代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2