6

を使用してJDK 6います。

と の 2 つのフォルダ名がFolder1ありFolder2ます。

Folder1次のファイルがあります

TherMap.txt

TherMap1.txt

TherMap2.txt

Folder2という名前のファイルは毎回1 つだけですTherMap.txt

私が欲しいもの、

から任意のファイルをコピーして、 という名前folder1で貼り付けます。既にに存在する場合は、削除して貼り付けます。Folder2TherMap.txtTherMap.txtFolder2

次のコードを書きましたが、機能していません

public void FileMoving(String sourceFilePath, String destinationPath, String fileName) throws IOException {
    File destinationPathObject = new File(destinationPath);
    File sourceFilePathObject = new File(sourceFilePath);
    if ((destinationPathObject.isDirectory()) && (sourceFilePathObject.isFile()))
    //both source and destination paths are available 
    {
        //creating object for File class
        File statusFileNameObject = new File(destinationPath + "/" + fileName);
        if (statusFileNameObject.isFile())
        //Already file is exists in Destination path
        {
            //deleted File
            statusFileNameObject.delete();
            //paste file from source to Destination path with fileName as value of fileName argument
            FileUtils.copyFile(sourceFilePathObject, statusFileNameObject);
        }
        //File is not exists in Destination path.
        {
            //paste file from source to Destination path with fileName as value of fileName argument
            FileUtils.copyFile(sourceFilePathObject, statusFileNameObject);
        }
    }
}

上記の関数を呼び出しますmain()

 //ExternalFileExecutionsObject is class object
 ExternalFileExecutionsObject.FileMoving(
            "C:/Documents and Settings/mahesh/Desktop/InputFiles/TMapInput1.txt",
            "C:/Documents and Settings/mahesh/Desktop/Rods",
            "TMapInput.txt");

関数を使用してFileUtilsいるときにエラーが表示されるので、エラーをクリックすると、次のコードで新しいパッケージが自動的に生成されました。

 package org.apache.commons.io;
 import java.io.File;
 public class FileUtils {
    public static void copyFile(File sourceFilePathObject,
        File statusFileNameObject) {
        // TODO Auto-generated method stub
    }
 }

動作していなくても、コードにエラーは表示されません。

どうすればこれを修正できますか。

ありがとう

4

2 に答える 2

9

FileUtilsを使用するApache Commons FileUtils.copyDirectory(source, desc);

于 2013-07-23T14:14:49.603 に答える
1

ApacheCommons ソリューションを使用するには、次の場所にある ApacheCommons ライブラリをダウンロードする必要があるため、コードが機能していません。

http://commons.apache.org/

それへの参照を追加します。

JRE 6 を使用しているため、すべての NIO ファイル ユーティリティを使用することはできません。また、フォーラムの投稿にすばやく回答する方法として Apache Commons を愛用しているにもかかわらず、1 つの機能を取得するためだけにそのユーティリティを追加する必要があるという考えは気に入らないかもしれません。 . ApacheCommons を使用せずに transferFrom メソッドを使用するこのコードを使用することもできます。

public static void copyFile(File sourceFile, File destFile) throws IOException {
  if (!destFile.exists()) {
    destFile.createNewFile();
  }
  FileInputStream fIn = null;
  FileOutputStream fOut = null;
  FileChannel source = null;
  FileChannel destination = null;
  try {
    fIn = new FileInputStream(sourceFile);
    source = fIn.getChannel();
    fOut = new FileOutputStream(destFile);
    destination = fOut.getChannel();
    long transfered = 0;
    long bytes = source.size();
    while (transfered < bytes) {
      transfered += destination.transferFrom(source, 0, source.size());
      destination.position(transfered);
    }
  } finally {
    if (source != null) {
      source.close();
    } else if (fIn != null) {
      fIn.close();
    }
    if (destination != null) {
      destination.close();
    } else if (fOut != null) {
      fOut.close();
    }
  }
}

7 にアップグレードすると、次のことができるようになります。

public static void copyFile( File from, File to ) throws IOException {
    Files.copy( from.toPath(), to.toPath() );
}

参照:

https://gist.github.com/mrenouf/889747

Javaでファイルをコピーする標準的な簡潔な方法は?

于 2013-07-23T15:17:07.520 に答える