我需要制作所选文件的备份副本,同时使用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));
}
}
}
答案 0 :(得分: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
方法的一行。
Files.copy(f.toPath(),new File(“newFilePath”)。toPath(), StandardCopyOption.REPLACE_EXISTING);