【问题标题】:Copying files in java (Doesn't work)在java中复制文件(不起作用)
【发布时间】:2013-04-05 01:57:24
【问题描述】:

我已经尝试了许多来自同一个问题的示例,包括:

IOUtils.copy();

(复制是一种不存在的方法)

Files.copy(source, target, REPLACE_EXISTING);

(REPLACE_EXISTING "找不到符号")

FileUtils.copyFile();

(FileUtils 不存在)

使用它们的问题在括号中。

复制次数最多的方法代码如下:

import static java.nio.file.Files;
public void Install()
{
    CrtFol();
    CrtImgFol();
    CrtSaveFol();
    CrtSaveFile();
    open.runmm();
    //I have added the import for "Files"
    Files.copy(img1, d4, REPLACE_EXISTING);
    //Compiler says "Cannot find symbol" when I go over REPLACE_EXISTING
    //img1 is a File and d4 is a File as a directory
}

还有其他方法可以复制或修复上述问题吗?

【问题讨论】:

  • 只是静态导入或显式引用StandardCopyOption?
  • FileUtils 在apache commons-io jar 中可用,你包含了吗? http://commons.apache.org/proper/commons-io/download_io.cgi REPLACE_EXISTING 应该是一个布尔值,这意味着您传递的值应该是true 或false,您不应该照原样复制粘贴所有内容
  • FileUtils 和 IOUtils 是 Apache commons-io 的一部分
  • BalusC 我确实包含了静态导入
  • 您能否在问题的代码中包含静态导入,因为这对于理解问题所在至关重要。

标签: java file directory copy


【解决方案1】:

借助 Java 7 的标准库,您可以使用 java.nio.file.Files.copy(Path source, Path target, CopyOption... options)。无需添加额外的依赖项或实现您自己的。

try {
     Files.copy( Paths.get( sFrom ), 
                 Paths.get( sTo ),
                 StandardCopyOption.REPLACE_EXISTING);
 } catch (IOException e) { 
     // Handle exception
 }

【讨论】:

  • 能否请您添加一些有关如何使用它的详细信息?
【解决方案2】:

不确定 Java 是否真的可以复制文件。最简单的方法是将文件转换为字节流,然后将此流写入另一个文件。像这样的:

        InputStream inStream = null;
        OutputStream outStream = null;

        File inputFile =new File("inputFile.txt");
        File outputFile =new File("outputFile.txt");

        inStream = new FileInputStream(inputFile);
        outStream = new FileOutputStream(outputFile);

        byte[] buffer = new byte[1024];


        int fileLength;
        while ((fileLength = inStream.read(buffer)) > 0){

              outStream.write(buffer, 0, fileLength );

              }

        inStream.close();
        outStream.close();

其中 inputFile 是从中复制的文件,而 outputFile 是副本的名称。

【讨论】:

  • 我相信是的。我已经用谷歌搜索了它并找到了一个 jpg 的示例,所以应该这样做。如果您使用此选项,请告诉我结果:)
  • 我试过了,但由于某种原因,现在 JVM 找不到该文件。
  • 您是否提供完整路径?
  • 图片在代码中的文件夹中,要复制到漫游文件夹中。我试过“img\\P.png”。 Img 是文件夹的名称,但它找不到它。 java.io.FileNotFoundException: img\P.png (系统找不到指定的路径)
  • 如果您在 src 目录中工作,那么这样做意味着它正在寻找 src 文件夹中的 img 文件夹。尝试找出与您编写代码的位置相对的位置,或者给出绝对路径。
【解决方案3】:

我使用这个代码:

import java.io.*;

public class CopyTest {

    public CopyTest() {

    }

    public static void main(String[] args) {
        try {
            File stockInputFile = new File("C://test.txt");
            File StockOutputFile = new File("C://output.txt");

            FileInputStream fis = new FileInputStream(stockInputFile);
            FileOutputStream fos = new FileOutputStream(StockOutputFile);
            int count = 0;

            while((count = fis.read()) > -1){
                fos.write(count);
            }
            fis.close();
            fos.close();
        } catch (FileNotFoundException e) {
            System.err.println("FileStreamsReadnWrite: " + e);
        } catch (IOException e) {
            System.err.println("FileStreamsReadnWrite: " + e);
        }

   }

}

【讨论】:

    猜你喜欢
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 2016-05-20
    • 2014-11-07
    • 2017-08-01
    • 1970-01-01
    相关资源
    最近更新 更多