【问题标题】:How to move .zip folders created using Java.NIO FileSystem如何移动使用 Java.NIO FileSystem 创建的 .zip 文件夹
【发布时间】:2023-04-01 08:22:02
【问题描述】:

我使用 FileSystem 创建了一个 .zip 文件夹(压缩文件夹),它存在于 JDK 1.7 及更高版本的 Java.nio 包中。

        URI zipUri = new URI("jar:" + fileUri.getScheme(), fileUri.getPath(), null);
        FileSystem zipfs = FileSystems.newFileSystem(zipUri, env);

现在,我想将压缩文件夹从一个目录移动到另一个目录,但我找不到任何方法来定位压缩文件夹,因为它是一个文件系统并且没有移动它的方法。

Files.move() 仅适用于文件或目录,但不适用于从 FileSystem 创建的压缩文件夹。

谁能指点我正确的方向吗?

【问题讨论】:

    标签: java file zip java.nio.file


    【解决方案1】:

    如何在 Java 中将文件移动到另一个目录

    Java.io.File 不包含任何现成的移动文件方法,但您可以使用以下两种替代方法来解决:

    File.renameTo()。 复制到新文件并删除原始文件。 在下面的两个示例中,您将文件“C:\carpeta1\archivo.zip”从一个目录移动到另一个具有相同文件名“C:\carpeta2\archivo2.zip”的目录。

    package com.softMolina.zip;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    public class MoveZipExample
    {
        public static void main(String[] args)
        {
    
        InputStream inStream = null;
        OutputStream outStream = null;
    
            try{
    
                File carpetaA =new File("C:\\carpeta1\\archivo.txt");
                File carpetaB =new File("C:\\carpeta2\\archivo.txt");
    
                inStream = new FileInputStream(carpetaA);
                outStream = new FileOutputStream(carpetaB);
    
                byte[] buffer = new byte[1024];
    
                int length;
                //copy the file content in bytes
                while ((length = inStream.read(buffer)) > 0){
    
                    outStream.write(buffer, 0, length);
    
                }
    
                inStream.close();
                outStream.close();
    
                //delete the original file
                afile.delete();
    
                System.out.println(".ZIP is copied successful!");
    
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    

    【讨论】:

    • 谢谢,但我正在寻找没有样板代码。另外,我的压缩文件夹是 FileSystem 类型的,不能转换为 File,所以你发布的代码不起作用。
    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 2017-01-17
    • 2016-02-06
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多