A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王涛 黑马帝   /  2012-1-10 13:39  /  2576 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王涛 于 2012-2-24 10:51 编辑

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class FileCopy {
        public static void main(String[] args) {
                String madd="F://textfile.txt";
                String nadd="D://textfile.txt";
                File mFile=new File(madd);
                File nFile=new File(nadd);
                try{
                        nFile.createNewFile();
                        FileInputStream mfi=new FileInputStream(mFile);
                        FileOutputStream nfi=new FileOutputStream(nFile);
                        byte[] date=new byte[512];
                        int fs=-1;
                        while((fs=mfi.read())>0){
                                nfi.write(date,0,fs);
                        }
                        nfi.close();
                        mfi.close();
                        System.out.println("文件拷贝成功");
                }catch(Exception e){
                        e.printStackTrace();
                }
        }
}
拷贝完成后,D盘textfile.txt文件里没有内容,感觉像是空格,内存也占用了。能看下那里出错了吗?谢了

6 个回复

倒序浏览
while((fs=mfi.read())>0){
                                nfi.write(date,0,fs);
                        }

public int read()
         throws IOException从此输入流中读取一个数据字节。如果没有输入可用,则此方法将阻塞。

read
public int read(byte[] b)
         throws IOException从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。在某些输入可用之前,此方法将阻塞。

read签名不一样,主要参数方法重载呀!!!!!!!!
回复 使用道具 举报
本帖最后由 朱泽宇 于 2012-1-10 14:47 编辑

public static void main(String[] args) {
                String madd="F://textfile.txt";
                String nadd="D://textfile.txt";
                File mFile=new File(madd);
                File nFile=new File(nadd);
                try{
                        nFile.createNewFile();
                        FileInputStream mfi=new FileInputStream(mFile);
                        FileOutputStream nfi=new FileOutputStream(nFile);
                        int fs=0;
                        while((fs=mfi.read())>0){
                                nfi.write(fs);
                        
                        }
                        nfi.close();
                        mfi.close();
                        System.out.println("文件拷贝成功");
                }catch(Exception e){
                        e.printStackTrace();
                }
        }


这样就好了
回复 使用道具 举报
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class FileCopy {
        public static void main(String[] args) {
                String madd="F://textfile.txt";
                String nadd="D://textfile.txt";
                File mFile=new File(madd);
                File nFile=new File(nadd);
                try{
                        //nFile.createNewFile();
                        FileInputStream mfi=new FileInputStream(mFile);
                        FileOutputStream nfi=new FileOutputStream(nFile);
                        byte[] date=new byte[512];
                        int fs;
                        while((fs=mfi.read(date))>0){//这个是正确的,你对比一下,是自己的read()里没有指定date数组,加上date数组,这数才能读到数据
                                               
                                nfi.write(date,0,fs);
                               
                               
                               
                        }
                       
                        mfi.close();
                        nfi.close();
                        System.out.println("文件拷贝成功");
                }catch(Exception e){
                        e.printStackTrace();
                }
        }
}
回复 使用道具 举报
再一个,你可以把IO代码写的更简单一点:下面是我自己帮你简写的,你可以参考一下:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;



public class CopyFile {

           public static void main(String[] args) {
                   try{
            
                            FileInputStream mfi=new FileInputStream("F://textfile.txt");
                            FileOutputStream nfi=new FileOutputStream("D://textfile.txt");
                            byte[] date=new byte[1024];
                            int fs;
                            while((fs=mfi.read(date))!=-1){
                                   nfi.write(date,0,fs);
                             }
       
                mfi.close();
                nfi.close();
                System.out.println("文件拷贝成功");
                }catch(Exception e){
                            e.printStackTrace();
               }      
          }
}                  
回复 使用道具 举报
谢了哥几个~~果然是忘了写date了,粗心啊,呵呵
回复 使用道具 举报
王涛 发表于 2012-1-10 15:49
谢了哥几个~~果然是忘了写date了,粗心啊,呵呵

:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马