2016-01-22 6 views

ответ

3

Я написал некоторые вспомогательные классы для это использование случай. Библиотека Open Source, может быть, вы найдете его полезным:

CopyFileVisitor.copy(srcPath, targetPath); 

Maven:

<dependency> 
    <groupId>org.softsmithy.lib</groupId> 
    <artifactId>softsmithy-lib-core</artifactId> 
    <version>0.5</version> 
</dependency> 

Учебник: http://www.softsmithy.org/softsmithy-lib/lib/0.5/docs/tutorial/nio-file/index.html

Javadoc: http://www.softsmithy.org/softsmithy-lib/lib/0.5/docs/api/softsmithy-lib-core/index.html

Исходный код: http://github.com/SoftSmithy/softsmithy-lib

0

Ниже я представляю решение, которое может быть использовано в Java следующим образом:

// Java code 
import com.google.common.jimfs.Jimfs; 
import org.junit.Test; 

import java.io.IOException; 
import java.nio.file.Files; 
import java.nio.file.Path; 

public class UsageExamples 
{ 
    @Test 
    public void UsageExample() throws IOException 
    { 
    Path dir = Jimfs.newFileSystem().getPath("dirWithSomeContents"); 
    Path dest = Jimfs.newFileSystem().getPath("destDir"); 
    Files.createDirectory(dir); 
    Files.createDirectory(dest); 

    // Act 
    new FileSystemsOperations().copyDirContentsRecursivelyToDirInDifferentFileSystem(dir, dest); 
    } 
} 

Мое решение в Groovy (полный код on GitHub):

// Groovy code 
import java.nio.file.Files 
import java.nio.file.Path 

class FileSystemsOperations 
{ 

    void copyDirContentsRecursivelyToDirInDifferentFileSystem(Path srcDir, Path destDir) 
    { 
    assert Files.isDirectory(srcDir) 
    assert Files.isDirectory(destDir) 
    assert srcDir.fileSystem != destDir.fileSystem 

    srcDir.eachFileRecurse {Path it -> 
     copyPath(it, srcDir, destDir) } 
    } 


    private static Path copyPath(Path it, Path src, Path dest) 
    { 
    assert it != null 
    assert Files.isDirectory(src) 
    assert Files.isDirectory(dest) 

    Path itInDest = mapToDestination(it, src, dest) 

    assert !Files.exists(itInDest) 

    if (Files.isDirectory(it)) 
    { 
     Files.createDirectory(itInDest) 

    } else if (Files.isRegularFile(it)) 
    { 
     Files.copy(it, itInDest) 

    } else 
     assert false 

    return itInDest 
    } 

    private static Path mapToDestination(Path path, Path srcDir, Path destDir) 
    { 
    return destDir.resolve(srcDir.relativize(path).toString().replace(srcDir.fileSystem.separator, destDir.fileSystem.separator)) 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^