【问题标题】:make a backup copy using JFileChooser使用 JFileChooser 制作备份副本
【发布时间】:2013-11-04 03:41:29
【问题描述】:

我需要在使用 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));
        }
    }        
}

【问题讨论】:

  • 所以基本上你想读取一个文件并将内容复制到另一个文件,是吗?您可以通过 Google 搜索大量示例。
  • 是的,先生,我试过谷歌搜索,我不知道该怎么做。
  • 其他文件只是所选文件的备份副本
  • 在此处查看如何以多种不同方式复制文件:stackoverflow.com/questions/2520305/… 我不明白为什么您必须为此使用DataInputStreamDataOutputStream,但它们正在工作和其他 Streams 一样。
  • 我必须为我正在从事的这个特定项目使用这两个类。不过谢谢你的帮助!

标签: java swing file-io jfilechooser datainputstream


【解决方案1】:

两个流的解决方案:

        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 方法。

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

【讨论】:

  • 谢谢!但我需要了解如何将 datainputstream 和 dataoutputstream 与此合并
  • 我更新了我的答案以符合要求。
  • 如果它是您问题的正确解决方案,请将答案标记为已接受,以便其他用户可以轻松注意到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多