java: resolve parent directory if started with seaweedfs://

This commit is contained in:
Chris Lu 2021-02-04 21:41:19 -08:00
parent 42e5ef4b01
commit 8c3177d835
2 changed files with 30 additions and 0 deletions

View File

@ -84,6 +84,11 @@ public class SeaweedOutputStream extends OutputStream {
} }
public static String getParentDirectory(String path) { public static String getParentDirectory(String path) {
int protoIndex = path.indexOf("://");
if (protoIndex >= 0) {
int pathStart = path.indexOf("/", protoIndex+3);
path = path.substring(pathStart);
}
if (path.equals("/")) { if (path.equals("/")) {
return path; return path;
} }

View File

@ -0,0 +1,25 @@
package com.seaweedfs.examples;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import java.io.*;
public class HdfsCopyFile {
public static void main(String[] args) throws IOException {
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS", "seaweedfs://localhost:8888");
configuration.set("fs.seaweedfs.impl", "seaweed.hdfs.SeaweedFileSystem");
FileSystem fs = FileSystem.get(configuration);
String source = "/Users/chris/tmp/test.zip";
String destination = "/buckets/spark/test01.zip";
InputStream in = new BufferedInputStream(new FileInputStream(source));
OutputStream out = fs.create(new Path(destination));
IOUtils.copyBytes(in, out, 4096, true);
}
}