黑马程序员技术交流社区

标题: 关于文件读取问题 [打印本页]

作者: 成果    时间: 2012-2-4 12:40
标题: 关于文件读取问题
FileInputStream fin = new FileInputStream("D:/cosmo.jpg");//改为 txt格式能正常复制
                FileOutputStream fout = new FileOutputStream("F:/cosmo.jpg");//改为 txt格式能正常复制

                int len = 0;
                while ((len = fin.read()) != -1) {
                        fout.write(len);
                }
                fin.close();
                fout.close();
为什么我这代码能复制txt文件,但是非曲直doc,图片之类的就会出现乱码。

该贴已经同步到 寻找幸福的13狼的微博
作者: 黑马唐浩    时间: 2012-2-4 13:02
应该行啊,不都是操作字节流么。
我刚才试了试,行啊。

作者: 成果    时间: 2012-2-4 13:12
我试了很多次复制doc.和图片。显示出来的为乱码。是不是哪个地方丢失了数据导致的?
作者: 梅雄新    时间: 2012-2-4 13:18
楼主图片,doc等都是二进制存储的,运用字节流是可以复制成功的
相同代码
import java.io.*;
public class Pic
{
        public static void main(String args[]) throws Exception
        {
                int temp = 0;
                        FileInputStream fin = new FileInputStream("d:/file/1.doc");
                        FileOutputStream fot = new FileOutputStream("d:/2222.doc");
                        while((temp = fin.read())!=-1)
                        {
                                fot.write(temp);
                        }
                        fin.close();
                        fot.close();
        }       
}
我试了图片,和doc都能正常显示的,再试试
作者: 郭繁森    时间: 2012-2-4 13:19
import java.io.*;
class Test
{
        public static void main(String[] args)throws IOException
        {
                FileInputStream fin = new FileInputStream("E:/000.jpg");
         FileOutputStream fout = new FileOutputStream("00.jpg");
                int len = 0;
                while ((len = fin.read()) != -1)
                                {
                       fout.write(len);
                }
                fin.close();
                fout.close();
        }
}

同楼上,你的代码能可以复制jpg的


你是不是编译后运行的是上个class是文件

作者: 梅雄新    时间: 2012-2-4 13:25
楼主图片,doc等都是二进制存储的,运用字节流是可以复制成功的
相同代码
import java.io.*;
public class Pic
{
        public static void main(String args[]) throws Exception
        {
                int temp = 0;
                        FileInputStream fin = new FileInputStream("d:/file/1.doc");
                        FileOutputStream fot = new FileOutputStream("d:/2222.doc");
                        while((temp = fin.read())!=-1)
                        {
                                fot.write(temp);
                        }
                        fin.close();
                        fot.close();
        }       
}
我试了图片,和doc都能正常显示的,再试试
作者: 张伟~    时间: 2012-2-4 13:45
试了下,用你这代码确实可以复制图片的,不过你这没加缓冲速度也太慢了点。

作者: 成果    时间: 2012-2-4 14:14
我试了一个简单的doc是行。但我换成一个我下载的基础试题这个doc就不行。
作者: 成果    时间: 2012-2-4 14:28
谢谢各位了。。已解决。原来是自己的问题。我用另一个byte[]读取时把值更改错误了。
作者: 郭繁森    时间: 2012-2-10 11:55
那就把问题改为已解决
同学




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2