黑马程序员技术交流社区
标题:
关于转换流的问题
[打印本页]
作者:
黄昆
时间:
2012-6-26 10:30
标题:
关于转换流的问题
本帖最后由 hkylp 于 2012-7-1 09:08 编辑
/*
练习:运用转换流将一个图片文件中的数据拷贝到另一个文件中。
*/
import java.io.*;
class TransStreamTest1
{
public static void main(String[] args)throws IOException
{
FileInputStream fis=new FileInputStream("E:\\ 002.jpg");
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader bufr=new BufferedReader(isr);
FileOutputStream fos=new FileOutputStream("c:\\002.jpg");
OutputStreamWriter osw=new OutputStreamWriter(fos);
BufferedWriter bufw=new BufferedWriter(osw);
String len=null;
if ((len=bufr.readLine())!=null)
{
bufw.write(len);
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}
为什么拷贝的图片打开后没有图像呀?拷贝的图片大小比原图片小很多,为什么?
作者:
黑马—陈磊
时间:
2012-6-26 10:46
本帖最后由 黑马—陈磊 于 2012-6-26 10:47 编辑
建议多看几遍毕老师的视频,里边讲解的很清楚。
我写了一个拷贝图片的,楼主参考参考
public static void main(String[] args) {
FileInputStream fin = null;
FileOutputStream fout = null;
try {
fin = new FileInputStream("e:\\1.jpg");
fout = new FileOutputStream("d:\\2.jpg");
byte[] b = new byte[fin.available()];
int n;
while ((n = fin.read(b)) != -1) {
fout.write(b, 0, n);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fin.close();
fout.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
作者:
周兴中
时间:
2012-6-26 11:42
本帖最后由 周兴中 于 2012-6-26 11:44 编辑
BufferedReader bufr=
new BufferedReader(new InputStreamReader(new FileInputStream("1.bmp"),"UTF-16BE"));//
由于InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。而默认的字符集是GBK,图片的字符集是UTF-16BE ,UTF-16LE,所以要想正确编码和解码,需设置字符集为UTF-16BE或UTF-16LE.
BufferedWriter bufw=
new BufferedWriter(new OutputStreamWriter(new FileOutputStream("2.bmp"),"UTF-16BE"));//
OutputStreamWriter 同理
作者:
黄昆
时间:
2012-7-1 08:55
周兴中 发表于 2012-6-26 11:42
BufferedReader bufr=
new BufferedReader(new ...
分析的好,我又学会了一个知识点。谢啦,哥们
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2