java怎么把A机器的文件复制到B机器???

解决方案 »

  1.   

    这里是一个文件复制的例子import java.io.*;
    import java.nio.*;
    import java.nio.channels.*;
    public class FileCopyForBuffer {    public static void main(String[] args) throws IOException{        FileInputStream fis = new FileInputStream("e:/hhll.txt");
            FileOutputStream fos = new FileOutputStream("e:/helin123.txt");
            //定义 输入的管道和输出的管道
            FileChannel fin = null,fout = null;
            //输入的管道和输出的管道符给输入和输出流
            fin = fis.getChannel();
            fout = fos.getChannel();
            //定义一个缓冲区
            ByteBuffer bf = ByteBuffer.allocate(1024);        for(;;)
            {
                //将缓冲区中的position设置为0,limit指向capacity
                bf.clear();
                //第一次执行循环时将输入流中的数据全部读入缓冲区中,再判断一下数据的个数
                //当执行完一次循环时,因为现在文件中的指针所指向的是文件的末尾处,所以就
                //没有读入的数据说明已经到文件末尾,此时判断个数为-1
                int i = fin.read(bf);            if(i == -1)
                {
                    break;
                }
                //将缓冲区中的limit设置为position的位置,再将position设置为0,这样就
                //可以取得到文件的全部。
                bf.flip();
                //将已经只存有读入的文件全部数据的部分通过输入流写入另一个文件
                fout.write(bf);
            }
            //关闭操作,以节省资源
            fin.close();
            fout.close();
            fis.close();
            fos.close();
        }
    }
      

  2.   

    谢谢您。lb999255
    自己写了原来写了一个用BufferedReader(FileReader)和BufferedWriter(FileWriter)复制文件的方法。但是发现不能复制图片和视频文件。据自己猜测是字节流与字符流的不同。
    然后上网查就查到了这里。当然也谢谢楼主发了个个贴子。同时附上我根据lb999255的方法写的一个复制文件的方法。
        private void copyFile(File f,File dir)                                     //将文件f复制到dir目录下
        {
            
            if(!f.isFile())
                System.out.println("这不是文件!");
            else 
            {
                try
                {
                    File fcopy=new File(dir, f.getName());
                    fcopy.createNewFile();
                    FileInputStream finpen=new FileInputStream(f);
                    FileOutputStream foutpen=new FileOutputStream(fcopy);
                    FileChannel fin=finpen.getChannel(),
                                fou=foutpen.getChannel();                ByteBuffer byb=ByteBuffer.allocate(1024);
                    int i=1;
                    while(i!=-1)
                    {
                        byb.clear();
                        i=fin.read(byb);
                        byb.flip();
                        fou.write(byb);
                    }
                    fin.close();
                    fou.close();
                    finpen.close();
                    foutpen.close();
                 }
                catch(Exception e)
                {
                    System.out.println("复制文件出错。建议检查文件的属性。");
                }
             }
        }