• hdfsClient_java对hdfs进行上传、下载、删除、移动、打印文件信息尚硅谷大海哥


    Java可以通过Hadoop提供的HDFS Java API来控制HDFS。通过HDFS Java API,可以实现对HDFS的文件操作,包括文件的创建、读取、写入、删除等操作。

    具体来说,Java可以通过HDFS Java API来创建一个HDFS文件系统对象,然后使用该对象来进行文件的操作。例如,可以使用FileSystem类的create()方法来创建一个新的文件,使用open()方法来打开一个文件进行读取,使用write()方法来向文件中写入数据,使用delete()方法来删除一个文件等。

    此外,Java还可以通过HDFS Java API来管理HDFS的元数据信息,包括文件的权限、所有者、修改时间等信息。通过FileSystem类的setPermission()、setOwner()、setTimes()等方法,可以对文件的元数据信息进行修改。

    前提:
    配置HADOOP_HOME环境变量

    配置Path环境变量

    Maven依赖成功导入

    (这三个不会的评论区评论我发资料给你)

    代码:

    1. package com.huangyongsheng.hdfs;
    2. import java.io.IOException;
    3. import java.io.InputStream;
    4. import java.net.URI;
    5. import java.net.URISyntaxException;
    6. import org.apache.hadoop.conf.Configuration;
    7. import org.apache.hadoop.fs.FileSystem;
    8. import org.apache.hadoop.fs.LocatedFileStatus;
    9. import org.apache.hadoop.fs.Path;
    10. import org.apache.hadoop.fs.RemoteIterator;
    11. import org.apache.hadoop.io.IOUtils;
    12. import org.junit.After;
    13. import org.junit.Before;
    14. import org.junit.Test;
    15. /**
    16. * 客户端代码常用套路
    17. * 1,获取客户端对象
    18. * 2.执行操作
    19. * 3.关闭资源
    20. * HDFS zookeeper
    21. */
    22. public class HdfsClient {
    23. private FileSystem fs;
    24. @Before
    25. public void init() throws URISyntaxException, IOException, InterruptedException {
    26. URI uri = new URI("hdfs://hadoop102:8020");
    27. Configuration configuration = new Configuration();
    28. String user="huangyongsheng";
    29. fs = FileSystem.get(uri, configuration, user);
    30. }
    31. @After
    32. public void close() throws IOException {
    33. fs.close();
    34. }
    35. @Test
    36. //创建目录
    37. public void testmkdir() throws URISyntaxException, IOException, InterruptedException {
    38. fs.mkdirs(new Path("/xiyuo/huaguoshan2"));
    39. System.out.println("目录创建成功");
    40. }
    41. @Test
    42. //上传;是否删除原数据;是否覆盖;原数据路径;目的路径
    43. public void testPut() throws IOException {
    44. fs.copyFromLocalFile(false,false,new Path("D:\\sun_wu_kong.txt"),new Path("/xiyuo/huaguoshan"));
    45. }
    46. @Test
    47. //下载;是否删除原数据;hdfs文件路径;win路径;是否校验(不用)
    48. public void testGet() throws IOException {
    49. // fs.copyToLocalFile(false,new Path(""),new Path(""));
    50. InputStream in =fs.open(new Path("/dancijishu/wcinput/word1.txt"));
    51. IOUtils.copyBytes(in,System.out,4096,false);
    52. IOUtils.closeStream(in);
    53. }
    54. @Test
    55. //删除;删除文件,目录,非空目录(需要参数true)是否递归删除
    56. public void testRm() throws IOException {
    57. fs.delete(new Path(""),false);
    58. }
    59. @Test
    60. //文件的更名和移动
    61. public void testmv() throws IOException {
    62. fs.rename(new Path("/xiyuo/huaguoshan2"),new Path("/xiyuo/huaguoshan_namechanged"));
    63. // rename可以移动文件并改名 原文件路径(路径里的文件) 一个新的路径(路径里的文件)
    64. }
    65. @Test
    66. //获取文件详情
    67. public void fileDetail() throws IOException {
    68. //获取所有文件信息 迭代器
    69. RemoteIterator listFiles = fs.listFiles(new Path("/"),true);
    70. while (listFiles.hasNext()){
    71. LocatedFileStatus fileStatus = listFiles.next();
    72. System.out.println("===================="+fileStatus.getPath()+"====================");
    73. System.out.println(fileStatus.getPermission());
    74. System.out.println(fileStatus.getOwner());
    75. System.out.println(fileStatus.getGroup());
    76. System.out.println(fileStatus.getLen());
    77. System.out.println(fileStatus.getModificationTime());
    78. System.out.println(fileStatus.getReplication());
    79. System.out.println(fileStatus.getPath().getName());
    80. }
    81. }
    82. }

  • 相关阅读:
    GoLang:云原生时代致力于构建高性能服务器的后端语言
    【Java】泛型类
    python中的字符串对象
    盗卖上亿条公民个人信息,“安全刺客”怎么防?
    OpenCV图像学习八,图像归一化盒子滤波处理和图像高斯滤波处理实现
    C语言中的typedef用法
    Kubernetes集群中部署服务思路
    Flink SQL -- 反压
    2024年保安员职业资格考试真题分享
    DNS域名解析过程
  • 原文地址:https://blog.csdn.net/HYSliuliuliu/article/details/134498171