java怎么把A机器的文件复制到B机器???
解决方案 »
- 请教frame中src的路径问题
- webserver的javax.xml.ws.soap.SOAPFaultException: Fault occurred while processing的
- 在jsp页面显示从数据库查的二进制流图片?
- 上品折扣网站技术架构
- 在线等,解决了马上结贴:用session可以把一个值从这个项目传到另一个项目中去吗
- 如何在jsp页面中把日期写入数据库
- ---求高手进啊---
- 祝大家圣诞快乐,顺便问两个问题!jsp+javabean
- 各位,请帮我看看这到底是哪里的问题(在线等待……)
- 开发留言板,用textarea填写内容后jsp怎样处理换行符?
- 再发一贴tomcat报错,希望帮忙看看
- 这样的Tomcat404错误.用这么久了第一次.不知道怎么解决?
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();
}
}
自己写了原来写了一个用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("复制文件出错。建议检查文件的属性。");
}
}
}