public static void main(String[] args) 
{
FileInputStream fis = new FileInputStream("f:\1.jpg");
FileoutputStream fos = new FileoutputStream("f:\cpy1.jpg");

BufferedReader br = new BufferedReader(new InputStreamReader(fis));
BufferedWriter br = new BufferedWriter(new InputStreamWriterr(fos)); boolean isend = false;
String str =new String();
while(!isend)
{
str = br.readLine();
bw.write(str,0,str.length);
if(str==null)
isend=true;
}
bw.flush;
br.close;
bw.close;
}

还有一个差不多的PRO:public static void main(String[] args) throws Exception
{
FileReader fr= new FileInputStream("G:\1.jpg");
FileWriter fw = new FileInputStream("G:\cpy1.jpg");; int data;  // AA处
while ((data=readFile.read())!=-1)
{
fw.write(data);
}
fw.flush();
fr.close();
fw.close();
}问题1:cpy1.jpg是产生了 但是和1.jpg比大小,老是少0.2K,打开一看,全黑的
问题2:AA处 为什么没有初始化也编译OK?它是MAIN()方法的变量啊,不是类成员啊?

解决方案 »

  1.   

    str.length什么意思
    String有这个属性么
    应该是str.lenth()吧
      

  2.   

    public static void main(String[] args) throws Exception
    {
    FileInputStream  fr= new FileInputStream ("G:\\1.jpg");
    FileOutputStream  fw = new FileOutputStream("G:\\cpy1.jpg"); int data;  // AA处
    while ((data=fr.read())!=-1)
    {
    fw.write(data);
    }
    fw.flush();
    fw.close();
    fr.close();
    }FileReader 和FileWriter是对文本文件操作的类
    不能用在二进制文件中。如果用了,就会丢掉那些不是字符的那些byte另外:int data;为什么会不编译通过呢。
    基本数据类型在declare的时候就分配了内存的,而且在java里会初始化初值的,int类型默认是0
      

  3.   

    这样好点,用缓冲 public static void main(String[] args) throws Exception
    {
    FileInputStream  fr= new FileInputStream ("C:\\2266.gif");
    FileOutputStream  fw = new FileOutputStream("C:\\c2266.gif");; int data;
    byte[] bb = new byte[1024];  // AA处
    while ( fr.read(bb)!=-1)
    {
    fw.write(bb);
    }
    fw.flush();
    fw.close();
    fr.close();
    }
      

  4.   

    对不起,我是在网吧上网 这里不能用U盘 所以 我把原码抄到纸后,在敲到这里的
    所以应该是这样的:
    public static void main(String[] args) 
    {
    FileInputStream fis = new FileInputStream("f:\1.jpg");
    FileOutputStream fos = new FileOutputStream("f:\cpy1.jpg");

    BufferedReader br = new BufferedReader(new InputStreamReader(fis));
    BufferedWriter bw = new BufferedWriter(new InputStreamWriterr(fos)); boolean isend = false;
    String str =new String();
    while(!isend)
    {
    str = br.readLine();
    bw.write(str,0,str.length());
    if(str==null)
    isend=true;
    }
    br.close;
    bw.close;
    }
    问题 报告 IO 报NULLPOINTERException 
      

  5.   

    zebra007(呼呼) 说的是对的
    假如对图形图象进行IO的话又专门的imageIO的
    你这样只是在缓冲中拷贝了本分文件,而不能重新组合成图像,所以显示出来是一块 黑区
    察看一下javax.imageio.ImageIO
      

  6.   

    f:\1.jpg
    不能这么写要写成f:\\1.jpg