首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

就10分了 问个io的有关问题

2011-11-06 
就10分了 问个io的问题packagetestimportjava.io.*publicclassa{publicstaticvoidmain(String[]args){tr

就10分了 问个io的问题
package   test;

import   java.io.*;

public   class   a   {

        public   static   void   main(String[]   args)   {
                try   {
                        File   file   =   new   File( "d:\\Sunset.jpg ");
                        FileInputStream   input   =   new   FileInputStream(file);
                        BufferedInputStream   bufferedinput   =   new   BufferedInputStream(input);

                        File   file2=new   File( "e:\\Sunset.jpg ");
                        FileOutputStream   output   =   new   FileOutputStream(file2);
                        BufferedOutputStream   bufferedoutput=new   BufferedOutputStream(output);

                        byte[]   zijie   =   new   byte[1024];

                        while   (bufferedinput.available()   >   0)   {       //这里,这什么把bufferedinput.availiable()改成input.available()后   输出的文件是残缺不全的。也是输出的文件只能看到上半部分   下半部分是灰色的。

                                bufferedinput.read(zijie);
                                bufferedoutput.write(zijie);

                        }

                        bufferedoutput.flush();
                        bufferedoutput.close();

                        output.close();
                        bufferedinput.close();
                        input.close();

                        if   (file2.exists())
                        {
                                System.out.println( "成功! ");
                        }else{
                                System.out.println( "失败 ");
                        }


                }   catch   (Exception   ex)   {
                        System.out.println(ex.getMessage());


                }

        }

}

谢谢回答!


[解决办法]
bufferedinput.read(zijie);
虽然你的zijie数组是1024,但实际上,每次读取出来的数据未必是填满的,
尤其最后一次,一定不会满,所以,应该判断bufferinput.read读取的返回值决定拿到了多少字节数据。

没有调试你的代码,只是一个建议。

热点排行