Hadoop使用Java复制文件(无法创建文件)

时间:2018-10-12 03:13:26

标签: java hadoop

我目前想将文件从hdfs复制到本地计算机。我已经通过fileinputstream和fileoutputstream完成了大部分工作。但是然后我遇到了以下问题。

JAVA I / O异常。 Mkdirs无法创建文件

我进行了一些研究并弄清楚了我正在使用 filesystem.create()(hadoop函数)

https://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/FileSystem.html#create(org.apache.hadoop.fs.Path,%20org.apache.hadoop.util.Progressable)

原因如下:

  1. 如果我将路径设置为不存在的文件夹,则会创建一个文件夹,并且下载的文件位于其中。

  2. 如果我将路径设置为现有文件夹(例如当前目录),则会发生上述I / O异常。

说,如果我已经正确地获得了路径和fileinputstream,我应该使用什么(在文件系统库中更好)来解决这个问题

我的代码

//src and dst are the path input and output
Configuration conf = new Configuration();
FileSystem inFS = FileSystem.get(URI.create(src), conf);
FileSystem outFS = FileSystem.get(URI.create(dst), conf);
FSDataInputStream in = null;
FSDataOutputStream out = null;

in = inFS.open(new Path(src));

out = outFS.create(new Path(dst),
            new Progressable() {
        /*
         * Print a dot whenever 64 KB of data has been written to
         * the datanode pipeline.
         */
             public void progress() {
             System.out.print(".");
           }
    });

1 个答案:

答案 0 :(得分:-1)

在“ File”类中,有一个称为 createNewFile()仅在存在一个文件时才会创建一个新文件。