public void jbutton_openfile_actionPerformed(ActionEvent e){
try{
jfilechooser=new JFileChooser();
jfilechooser.setPreferredSize(new Dimension(400,300));
//jfilechooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);   
jfilechooser.showOpenDialog(this);//new JFrame("打开文件")
String myfilepath=jfilechooser.getSelectedFile().getPath();
String myfilename=jfilechooser.getSelectedFile().getName();
FileInputStream fins=new FileInputStream(myfilepath);
String prefix=myfilename.substring(myfilename.lastIndexOf(".")+1);
prefix="."+prefix;
File file=new File(myfilepath.replaceAll("[.][^.]+$", "")+"副品"+prefix);
FileOutputStream fouts=new FileOutputStream(file);
byte[]bt=new byte[fins.available()];
fins.read(bt);
fouts.write(bt);
jtextfield_importfile.setText("已复制"+myfilename);
count++;

}catch(IOException ioe){
this.setTitle("不能打开该文件");
}
}
这段代码是我写的实现文件复制的,但是发现只能用来复制小文件,当去复制大型文件时(比如视频文件或者大的exe文件)复制成功后再去打开文件时,就会发现复制的文件没用。我是想问怎样改才能实现可以复制大型文件,而且不会出错呢???

解决方案 »

  1.   

    byte[] bt = new byte[fins.available()];
    这个方法在使用在你复制大文件中,判定非阻塞的可读长度 不一定就是文件的总长度!而且你程序设计的,把一个文件全放到数组中并不是不好方法,还是添加缓存流进行读取比较好!
      

  2.   

    复制文件使用 FileChannel 的transferFrom /transferTo方法