Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for different FileSystem in Files.copy() and Files.move() #135

Closed
stefanofornari opened this issue Aug 7, 2023 · 1 comment
Closed

Comments

@stefanofornari
Copy link
Contributor

The following works:

FileSystem minio = FileSystems.newFileSystem(URI.create("s3://mybucket"));
File f = new File("src/test/resources/logback.xml");
Files.copy(f.toPath(), minio.getPath("test.txt"));
Files.copy(f.toPath(), minio.getPath("/")); <-- fails like in default file system because / exists and is a directory not a file

This does not work instead:

Files.copy(minio.getPath("test.txt"), new File("/tmp/test.txt").toPath(), StandardCopyOption.REPLACE_EXISTING);

and throws the following exception:

java.lang.IllegalArgumentException: type must be BasicFileAttributeView.class or S3FileAttributeView.class
	at software.amazon.nio.spi.s3.S3FileSystemProvider.getFileAttributeView(S3FileSystemProvider.java:924)
	at java.base/java.nio.file.Files.getFileAttributeView(Files.java:1786)
	at java.base/java.nio.file.CopyMoveHelper.copyToForeignTarget(CopyMoveHelper.java:110)
	at java.base/java.nio.file.Files.copy(Files.java:1307)
	at ste.s3.S3Test.copy_between_file_systems(S3Test.java:209)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.apache.maven.surefire.junitcore.pc.Scheduler$1.run(Scheduler.java:345)
	at org.apache.maven.surefire.junitcore.pc.InvokerStrategy.schedule(InvokerStrategy.java:47)
	at org.apache.maven.surefire.junitcore.pc.Scheduler.schedule(Scheduler.java:316)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
	at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
	at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
	at org.apache.maven.surefire.junitcore.pc.Scheduler$1.run(Scheduler.java:345)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1589)

@markjschreiber
Copy link
Contributor

This seems to be working now. I can copy a local file to s3 and then copy it back from S3 to another local path https://github.com/awslabs/aws-java-nio-spi-for-s3/blob/main/src/examples/java/software/amazon/nio/spi/examples/CopyToS3.java

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants