0

notExists(Path path, LinkOption... options) を使用してディレクトリが存在するかどうかを確認したいのですが、LinkOption.NOFOLLOW_LINKS と混同しています。ここに私のコードがあります:

import java.io.*; 
import java.nio.file.Files; 
import java.nio.file.*; 
import java.util.ArrayList; 

public class Test 
{ 
    public static void main(String[] args) throws IOException 
    {   
          Path source = Paths.get("Path/Source");
          Path destination = Paths.get("Path/Destination");
          ArrayList<String> files = new ArrayList<String>();
          int retry = 3;

          // get files inside source directory
          files = getFiles(source);

          // move all files inside source directory
          for (int j=0; j < files.size(); j++){
              moveFile(source,destination,files.get(j),retry);         
          }       
    } 

    // move file to destination directory
    public static void moveFile(Path source, Path destination, String file, int retry){
        while (retry>0){
            try {
                // if destination path not exist, create directory
                if (Files.notExists(destination, LinkOption.NOFOLLOW_LINKS)) {
                    // make directory  
                    Files.createDirectories(destination);  
                }

                // move file to destination path
                Path temp = Files.move(source.resolve(file),destination.resolve(file));         

                // if successfully, break
                if(temp != null){ 
                    break;
                } 
                // else, retry
                else {
                    --retry;
                } 

            } catch (Exception e){
                // retry if error occurs
                --retry;
            }
        }
    }

    // get all file names in source directory
    public static ArrayList<String> getFiles(Path source){

        ArrayList<String> filenames = new ArrayList<String>();
        File folder = new File(source.toString());
        File[] listOfFiles = folder.listFiles();   // get all files inside the source directory

        for (int i = 0; i < listOfFiles.length; i++) {
            if (listOfFiles[i].isFile()) {
                filenames.add(listOfFiles[i].getName()); // add file's name into arraylist
            } 
        }
        return filenames;
    }
} 

LinkOption.NOFOLLOW_LINKS を使用する場合と使用しない場合の結果は同じです (ファイルは宛先に転送されます)。だから、私の場合は推測ですが、リンクオプションを無視できますか? また、どのような状況でそれが必要になりますか? ありがとう!

4

1 に答える 1