hadoop客户端,IO流方式 上传、下载文件、定位读取 ---------》示例代码

IO流方式上传文件: 

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class HDFSIOTest {
    @Test
    public void putFile() throws URISyntaxException, IOException, InterruptedException {
        // 1 获取对象
        Configuration conf = new Configuration();
        FileSystem fs= FileSystem.get(new URI("hdfs://hadoop112:9000"),conf,"angel");

        // 2 获取输入流
        FileInputStream fis=new FileInputStream(new File("/home/angel/demo.txt"));

        // 3 获取输出流
        FSDataOutputStream fos=fs.create(new Path("/demo.txt"));

        // 4 流的对拷
        IOUtils.copyBytes(fis,fos,conf);

        // 5 关闭资源
        IOUtils.closeStream(fis);
        IOUtils.closeStream(fos);
        fs.close();

    }
}

结果显示: 

hadoop客户端,IO流方式 上传、下载文件、定位读取 ---------》示例代码_第1张图片

IO流方式下载文件: 

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class HDFSIOTest {
    @Test
    public void getFile() throws URISyntaxException, IOException, InterruptedException {
        // 1 获取对象
        Configuration conf = new Configuration();
        FileSystem fs= FileSystem.get(new URI("hdfs://hadoop112:9000"),conf,"angel");

        // 2 获取输入流
        FSDataInputStream fis=fs.open(new Path("/demo.txt"));

        // 3 获取输出流
        FileOutputStream fos=new FileOutputStream(new File("/home/angel/software/demo.txt"));

        // 4 流的对拷
        IOUtils.copyBytes(fis,fos,conf);

        // 5 关闭资源
        IOUtils.closeStream(fis);
        IOUtils.closeStream(fos);
        fs.close();
    }
}

得到的结果: 

hadoop客户端,IO流方式 上传、下载文件、定位读取 ---------》示例代码_第2张图片

定位读取:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class HDFSIOTest {
    @Test
    public void readFileSeek2() throws URISyntaxException, IOException, InterruptedException {
        // 1 获取对象
        Configuration conf = new Configuration();
        FileSystem fs= FileSystem.get(new URI("hdfs://hadoop112:9000"),conf,"angel");

        // 2 获取输入流
        FSDataInputStream fis=fs.open(new Path("/jdk-8u211-linux-x64.tar.gz"));

        // 3 设置指定读取位置
        fis.seek(1024*1024*128);//128M

        // 4 获取输出流
        FileOutputStream fos=new FileOutputStream(new File("/home/angel/jdk-8u211-linux-x64.tar.gz.part1"));

        // 5 流的对拷
        IOUtils.copyBytes(fis,fos,conf);

        // 6 关闭资源
        IOUtils.closeStream(fis);
        IOUtils.closeStream(fos);
        fs.close();
    }
}

结果: 

hadoop客户端,IO流方式 上传、下载文件、定位读取 ---------》示例代码_第3张图片

 

 

你可能感兴趣的:(#,hadoop)