黑马程序员技术交流社区

标题: 帮看些程序关于拷贝文件的? [打印本页]

作者: 王涛    时间: 2012-1-10 13:39
标题: 帮看些程序关于拷贝文件的?
本帖最后由 王涛 于 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文件里没有内容,感觉像是空格,内存也占用了。能看下那里出错了吗?谢了
作者: 卢其龙    时间: 2012-1-10 13:51
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:45
本帖最后由 朱泽宇 于 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();
                }
        }


这样就好了
作者: 为梦而战    时间: 2012-1-10 14:53
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();
                }
        }
}

作者: 为梦而战    时间: 2012-1-10 15:03
再一个,你可以把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();
               }      
          }
}                  

作者: 王涛    时间: 2012-1-10 15:49
谢了哥几个~~果然是忘了写date了,粗心啊,呵呵
作者: 为梦而战    时间: 2012-1-10 15:51
王涛 发表于 2012-1-10 15:49
谢了哥几个~~果然是忘了写date了,粗心啊,呵呵

:handshake




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