1、获取指定目录下的全部文件及文件夹
/**
* 列出 {@param path} 下的文件和文件夹
*
* @param fs 文件系统实例
* @param path 路径
* @return 返回一个目录列表
* @throws IOException 对于任何IO错误
*/
public static List<String> listFileAndDir(FileSystem fs, Path path) throws IOException {
List<String> list = new ArrayList<>();
if (fs.exists(path)) {
FileStatus[] listStatus = fs.listStatus(path);
for (FileStatus status : listStatus) {
list.add(status.getPath().toString());
}
}
return list;
}
2、将本地文件拷贝到HDFS上
/**
* 将本地文件拷贝到hdfs上
*
* @param fs 文件系统实例
* @param delSrc 是否删除原文件
* @param src 原文件路径
* @param dst 目标文件路径
* @param overwrite 是否覆盖现有文件
* @throws IOException 对于任何IO错误
*/
public static void localCopyHDFS(FileSystem fs, boolean delSrc, boolean overwrite, Path src, Path dst) throws IOException {
fs.copyFromLocalFile(delSrc, overwrite, src, dst);
}
3、将HDFS上的文件拷贝到本地
/**
* 将HDFS上的文件拷贝到本地
*
* @param fs 文件系统实例
* @param delSrc 是否删除原文件
* @param src 原文件路径
* @param dst 目标文件路径
* @param useRawLocalFileSystem 是否进行文件校验,如果使用本地文件系统也就是设置为true,就不会产生crc校验,否则就会产生crc校验
* @throws IOException 对于任何IO错误
*/
public static void hdfsCopyLocal(FileSystem fs, boolean delSrc, Path src, Path dst, boolean useRawLocalFileSystem) throws IOException {
fs.copyToLocalFile(delSrc, src, dst, useRawLocalFileSystem);
}
4、对文件或文件夹重命名
/**
* 对文件或对文件夹重命名
*
* @param fs 文件系统实例
* @param src 要重命名的路径
* @param dst 重命名后的新路径
* @return true 重命名成功;false 重命名失败
* @throws IOException 对于任何IO错误
*/
public static boolean rename(FileSystem fs, Path src, Path dst) throws IOException {
return fs.rename(src, dst);
}
5、删除文件或文件夹
/**
* 删除文件或文件夹
*
* @param fs 文件系统实例
* @param src 要删除的路径
* @param recursive 如果是目录,设置为true,否则会抛出异常
* @return true 删除成功;false 删除失败
* @throws IOException 对于任何IO错误
*/
public static boolean deleteFile(FileSystem fs, Path src, boolean recursive) throws IOException {
return fs.delete(src, recursive);
}
6、判断是文件还是文件夹
/**
* 判断是文件还是文件夹
*
* @param fs 文件系统实例
* @param src 目标路径
* @return true 文件夹;false 文件
* @throws IOException 对于任何IO错误
*/
public static boolean isFileOrDir(FileSystem fs, Path src) throws IOException {
FileStatus[] status = fs.listStatus(src);
boolean flag = false;
for (FileStatus fileStatus : status) {
flag = fileStatus.isDirectory();
}
return flag


1384

被折叠的 条评论
为什么被折叠?



