2013-10-25 81 views
0

我需要製作選定文件的備份副本,同時使用JfileChooser,以便用戶可以指定/或選擇備份文件的名稱。我必須爲此過程使用DataInputStream和DataOutputStream以及readByte和writeByte方法。使用JFileChooser創建備份副本

這裏是我到目前爲止有:

public class BasicFile {   

    public BasicFile() throws FileNotFoundException, IOException{ 
     JFileChooser chooser = new JFileChooser(); 
     chooser.showOpenDialog(null); 
     File f = chooser.getSelectedFile();    
     if (f.isFile()) 
     { 
      DataInputStream dis = new DataInputStream(new FileInputStream(f)); 
     } 
    }   
} 
+0

所以基本上你想讀取一個文件並將內容複製到另一個文件,是嗎?有一大堆你可以谷歌的樣本。 – Matthias

+0

是的,先生,我嘗試了谷歌搜索,我不完全確定如何去真的。 – Manu

+0

其他文件只是所選文件的備份副本 – Manu

回答

2

解決方案與兩個流:

 DataInputStream dis = new DataInputStream(new FileInputStream(f)); 
     ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 

     int nRead; 
     byte[] data = new byte[dis.available()]; 

     while ((nRead = dis.read(data, 0, data.length)) != -1) { 
      buffer.write(data, 0, nRead); 
     } 

     buffer.flush(); 

     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     DataOutputStream dataOutStream = new DataOutputStream(baos); 
     dataOutStream.write(data); 

     OutputStream outputStream = new FileOutputStream("newFilePath"); 
     baos.writeTo(outputStream); 
     baos.close(); //Lets close some streams 
     dataOutStream.close(); 
     outputStream.close(); 
     buffer.close(); 
     dis.close(); 

也許有更短的解決方案,弼代碼aboves作品。

沒有要求,它只會與Files.copy方法只有一行。

Files.copy(f.toPath(),新的文件( 「newFilePath」)toPath(), StandardCopyOption.REPLACE_EXISTING。);

+0

謝謝!但我需要了解如何將datainputstream和dataoutputstream合併到這個 – Manu

+0

我更新了我的答案以符合要求。 – Akkusativobjekt

+0

非常感謝您 – Manu