0

ユーザーがバックアップファイルの名前を指定/選択できるように、JfileChooser を使用しているときに、選択したファイルのバックアップコピーを作成する必要があります。このプロセスには、DataInputStream と DataOutputStream、および readByte メソッドと writeByte メソッドを使用する必要があります。

これが私がこれまでに持っているものです:

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));
        }
    }        
}
4

1 に答える 1

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();

より短い解決策があるかもしれませんが、上記のコードは機能します。

要件がなければ、Files.copyメソッドを含む 1 行だけになります。

Files.copy(f.toPath(),new File("newFilePath").toPath(), StandardCopyOption.REPLACE_EXISTING);

于 2013-10-25T06:50:20.750 に答える