2013-10-25 5 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

так что вы хотите прочитать один файл и скопировать содержимое в другой файл, да? Нагрузка образцов, на которые вы могли бы искать Google. – Matthias

+0

да, сэр, ive попробовал googling, im не совсем уверен, как это сделать. – 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

Смежные вопросы