首页 > 其他分享 >12.5每日总结7

12.5每日总结7

时间:2023-12-05 23:22:48浏览次数:32  
标签:总结 fs 12.5 每日 remoteFilePath conf FileSystem Path String

向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.fs.FileSystem;

import java.io.*;

public class AppendToFile {
/**
* 判断路径是否存在
*/
public static boolean test(Configuration conf, String path) {
try (FileSystem fs = FileSystem.get(conf)) {
return fs.exists(new Path(path));
} catch (IOException e) {
e.printStackTrace();
return false;
}
}

/**
* 追加文本内容
*/
public static void appendContentToFile(Configuration conf, String content,
String remoteFilePath) {
try (FileSystem fs = FileSystem.get(conf)) {
Path remotePath = new Path(remoteFilePath);
/* 创建一个文件输出流,输出的内容将追加到文件末尾 */
FSDataOutputStream out = fs.append(remotePath);
out.write(content.getBytes());
out.close();
} catch (IOException e) {
e.printStackTrace();
}

}

/**
* 追加文件内容
*/
public static void appendToFile(Configuration conf, String localFilePath,
String remoteFilePath) {
Path remotePath = new Path(remoteFilePath);
try (FileSystem fs = FileSystem.get(conf);
FileInputStream in = new FileInputStream(localFilePath);) {
FSDataOutputStream out = fs.append(remotePath);
byte[] data = new byte[1024];
int read = -1;
while ((read = in.read(data)) > 0) {
out.write(data, 0, read);
}
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 移动文件到本地 移动后,删除源文件
*/
public static void moveToLocalFile(Configuration conf,
String remoteFilePath, String localFilePath) {
try (FileSystem fs = FileSystem.get(conf)) {
Path remotePath = new Path(remoteFilePath);
Path localPath = new Path(localFilePath);
fs.moveToLocalFile(remotePath, localPath);
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 创建文件
*/
public static void touchz(Configuration conf, String remoteFilePath) {
try (FileSystem fs = FileSystem.get(conf)) {
Path remotePath = new Path(remoteFilePath);
FSDataOutputStream outputStream = fs.create(remotePath);
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* 主函数
*/
public static void main(String[] args) {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://localhost:9000");
String remoteFilePath = "/user/tiny/text.txt"; // HDFS文件
String content = "新追加的内容\n";
String choice = "after"; // 追加到文件末尾
// String choice = "before"; // 追加到文件开头

try {
/* 判断文件是否存在 */
if (!AppendToFile.test(conf, remoteFilePath)) {
System.out.println("文件不存在: " + remoteFilePath);
} else {
if (choice.equals("after")) { // 追加在文件末尾
AppendToFile.appendContentToFile(conf, content,
remoteFilePath);
System.out.println("已追加内容到文件末尾" + remoteFilePath);
} else if (choice.equals("before")) { // 追加到文件开头
/* 没有相应的api可以直接操作,因此先把文件移动到本地,创建一个新的HDFS,再按顺序追加内容 */
String localTmpPath = "/user/hadoop/tmp.txt";
AppendToFile.moveToLocalFile(conf, remoteFilePath,
localTmpPath); // 移动到本地
AppendToFile.touchz(conf, remoteFilePath); // 创建一个新文件
AppendToFile.appendContentToFile(conf, content,
remoteFilePath); // 先写入新内容
AppendToFile.appendToFile(conf, localTmpPath,
remoteFilePath); // 再写入原来内容
System.out.println("已追加内容到文件开头: " + remoteFilePath);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

标签:总结,fs,12.5,每日,remoteFilePath,conf,FileSystem,Path,String
From: https://www.cnblogs.com/clh628/p/17878578.html

相关文章

  • 2023.12.5 stl list容器
    3.7.1list基本概念 功能:将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成:链表由一系列结点组成 结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域 STL中的链表......
  • 2023-2024-1 20231309 《计算机基础与程序设计》第十一周学习总结
    2023-2024-120231309《计算机基础与程序设计》第十一周学习总结这个作业属于哪个课程<2023-2024-1-计算机基础与程序设计>这个作业要求在哪里<2023-2024-1计算机基础与程序设计第十一周作业>这个作业的目标<《计算机科学概论》第十五章,《C语言程序设计》第十章,上周......
  • 12.5每日总结(阅读笔记7)
     《梦断代码》中对软件工程所面临的种种困难与艰难的描述,很符合当下编程工作,自己对于软件编程也有切身感受。正如一队人马并肩扛起代码大石,虽历经磨难仍欲将其推上山顶的故事。正是这种磨砺与艰难的爬山过坎,成就了各种各样的运行的软件,构成了一个五彩缤纷的虚拟世界。    ......
  • 数据库总结复习(sql应用题 二)
    目录前言关系代数关系间运算条件表达式使用案例语法树例子前言本文针对考纲上的30分sql应用题所涉及到的知识进行归纳总结。分为两篇文章,本篇为关系代数相关知识点。关系代数关系间运算关系和关系之间需要用到以下关系运算符:其中,连接从连接条件上分,等值连接,非等值连......
  • 2023.12.5——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.jfinal明日计划:学习......
  • 每日总结-23.12.4
    packagecom.example.demo2.controller;importcom.example.demo2.common.AjaxResult;importcom.example.demo2.entity.gongWenInfo;importcom.example.demo2.mapper.gongWenMapper;importorg.springframework.beans.factory.annotation.Autowired;importorg.spring......
  • 每日总结-23.12.5
    packageInterface;importjavax.swing.*;importjavax.swing.table.DefaultTableCellRenderer;importjavax.swing.table.DefaultTableModel;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.BufferedRea......
  • 2023年12月5日每日随笔
    今天,进行了大型数据库hadoop实验五的实验,没有完成,完不成,准备面向结果编程,然后,进行软件设计模式的复习,出乎意料,一会将创建型设计模式看完了,当然很简陋,具体看的化等画重点在具体看某几个,主要还是创建型设计模式很简单。类创建型:由类进行实例化简单工厂(静态方法模式):最为简单一......
  • 每日总结12.5
    百度图像增强与特效SDK实验了解百度图像增强与特效相关功能并进行总结百度图像增强与特效相关的功能主要涉及到百度的PaddlePaddle深度学习框架和一些相关的图像处理技术。以下是百度图像增强与特效相关的功能概述:PaddlePaddle深度学习框架:百度的深度学习框架PaddlePaddle......
  • 单调栈与单调队列算法总结
    单调栈知识概览单调栈最常见的应用是找到每一个数离它最近的且比它小的数。单调栈考虑的方式和双指针类似,都是先想一下暴力做法是什么,然后再挖掘一些性质如单调性,最终可以把目光集中在比较少的状态中,从而达到降低时间复杂度的作用,都是算法优化的一种手段。对于的情况,更有可能......