1. 程式人生 > >HDFS之globStatus()函式(用萬用字元匹配製定模式的路徑)liststatus() (列出目錄下的所有檔案)

HDFS之globStatus()函式(用萬用字元匹配製定模式的路徑)liststatus() (列出目錄下的所有檔案)

Globstatus.java

import java.io.IOException;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class Globstatus {
	//萬用字元
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		String uri = "hdfs://back03:9000/user/root/in/weibo*.txt";
		Configuration conf = new Configuration();
		FileSystem fs = FileSystem.get(URI.create(uri),conf);
		FileStatus[] status =  fs.globStatus(new Path(uri));
		System.out.print("heh");
		for(FileStatus p:status){
			if (fs.exists(p.getPath())) {
	              System.out.println(p.getPath());
	           }
		}
	}

}

執行結果為:
hehhdfs://back03:9000/user/root/in/weibo4.txt
萬用字元列表:
*                             匹配0到多個字元
?                            匹配單一字元
[ab]                          匹配{a,b}集合中的一個字元
[^ab]                         匹配非{a,b}集合裡的一個字元
[a-b]                         匹配在{a,b}範圍內的一個字元
[^a-b]                        同理可知
{a,b}                        匹配包含a或b中的一個字元
\c                            匹配元字元c
Liststatus.java
import java.io.IOException;
import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;

public class Liststatus {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		String uri = args[0];
		Configuration conf = new Configuration();
		FileSystem fs = FileSystem.get(URI.create(uri), conf);
		Path[] paths = new Path[args.length];
		for(int i = 0; i < paths.length; i++){
		paths[i] = new Path(args[i]);
		}
		FileStatus[] status = fs.listStatus(paths);
		Path[] listedPaths = FileUtil.stat2Paths(status);
		for(Path p : listedPaths){
		System.out.println(p);
		}
	}
}
輸入:
hdfs://back03:9000/user/root/in/ hdfs://back03:9000/user/root/

執行結果:
hdfs://back03:9000/user/root/in/amazon-meta.txt
hdfs://back03:9000/user/root/in/mywritable.txt
hdfs://back03:9000/user/root/in/test.txt
hdfs://back03:9000/user/root/in/weibo4.txt
hdfs://back03:9000/user/root/in
hdfs://back03:9000/user/root/out



相關推薦

HDFSglobStatus()函式字元配製模式路徑liststatus() 列出目錄所有檔案

Globstatus.java import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.

sed命令linux替換目錄所有檔案中的某字串

linux替換目錄下所有檔案中的某字串 比如,要將目錄/modules下面所有檔案中的zhangsan都修改成lisi,這樣做: sed -i “s/zhangsan/lisi/g” grep zhangsan -rl /modules 解釋一下: -i 表示inplace ed

C++瀏覽目錄所有檔案window和linux版本

原本以為這麼常用的功能應該是標準C支援的,試了一下才發現不同平臺差異挺大。 參考部落格:https://blog.csdn.net/u012005313/article/details/50687297 上程式碼 test_dir.cpp #include <vector>

Python計算一個目錄所有檔案包括子目錄中所有檔案指定的檔案型別個數

 輸入工程名計算一個工程專案中C++,Java,Python,GO語言的檔案個數,並找出Python檔案中最大檔案的檔名 1、先讀取檔案地址,找到該資料夾 import os import os.path path = 'C:/python學習/Python作業/' +

java程式 一次改變指定目錄所有檔案編碼包括子目錄中的檔案

package transCoding; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInpu

批處理解決實際問題1——將目錄所有檔案*.cpp分別建立同名資料夾並移入其中

問題描述: 學習OpenGL時,從網上下載了一些原始碼,解壓後發現所有.cpp檔案在同一個目錄下,這樣直接一個一個全部編譯的話,就亂套了,雖然不影響結果但不利於管理。於是,我需要寫一個程式將所有*.cpp檔案放入到同名檔案加下。 解決方案: 毫無疑問,採用批處理技術。思路

php獲取目錄所有檔案目錄多種方法

獲取某目錄下所有子檔案和子目錄 function getDirContent($path){ if(!is_dir($path)){ return false; }

Linux基礎篇輸出重定向與字元

1.輸出分為: 標準輸出重定向(檔案描述符11),錯誤輸出重定向(檔案描述符為2),二者預設解釋輸出到螢幕上。 2.詳細解釋: 符號 作用 命令 >

批量刪除redis鍵值使用字元

轉自: http://blog.csdn.net/spring21st/article/details/15771861 如果是預設的0資料庫: redis-cli -a password keys "key*" | xargs redis-cli -a password

DMM數字精度5位半和6位半的涵義是什麼?

 如圖所示,這是一個5位半的數字萬用表。 它可以顯示的數值從-199999 到 199999,包括小數位。 第一個包含4個數碼管,只能顯示的正負和0,1,所以稱之為半位。其他的包含8個數碼管(7段數碼管+1個小數點),能顯示0~9,我們稱之為一位。一個 6 1/2 位數字

一個簡單的模式字串查詢支援字元‘*’

資料結構課的一些作業還是有些難度的,對於部分有價值或下了苦工的問題還是傳上來好叻,回頭寫註釋,紀念菜雞生涯 【問題描述】 在當前目錄下的檔案string.in中查詢給定的字串,並將查詢到的字串和行號輸出到當前目錄下的檔案string.out中。要求: 1)從鍵

FindFirstFile和FindNextFile函式歷遍指定目錄所有檔案

本文利用FindFirstFile(),FindNextFile()函式歷遍指定目錄的所有檔案,最基礎的歷遍所有檔案。一下程式碼尚無法解決檔名為中文時的亂碼問題,以及無法分別無後綴的檔名和資料夾名的區別。http://blog.csdn.net/u012005313/article/details/464

Struts2字元進行模糊分頁查詢

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <!DO

linux SFTP戶創建 不允許戶登錄,並且連接只允許在制定的目錄進行操作

重啟 login mil shell man 權限 directory end roo 1.創建用戶 groupadd sftp 2.添加用戶並設置為sftp組 useradd -g sftp -s /sbin/nologin -M sftp (/sbin/nolo

遞迴方法輸出目錄所有的檔名

# !/bin/bash function echo_name() { #shell會執行反引號中的內容(命令) for file in `ls $1` do if [ -d $1'/'$file ] then echo_name $1'/'$file else ech

shell遍歷當前目錄檔案去掉檔案字尾的字串替換檔案中的文字

今天寫了一個shell,遍歷當前目錄下的檔案,用每個檔案的檔名去掉字尾的字串替換檔案中的一段字串。  指令碼如下: #!/bin/bashfile=`ls *.html`;echo $filefor item in $filedo filename=${item

python計算出大檔案的md5碼,某路徑所有檔案的md5碼

#coding:utf-8 #md5check.py #讀檔案,轉成md5碼 #如沒有檔案路徑,則詢問 #是檔案,返回md5碼 #是路徑把其下所有檔案返回md5碼 #參考:http://www.joelverhagen.com/blog/2011/02/md5-hash-

遞歸讀取制定目錄所有文件夾和文件的實現java

sys all obj 異常 on() catch turn tdi else   public static String getAllDirectorisAndFiles(String path){ Map<String, Object> res

復制目錄所有文件隱藏文件與非隱藏文件

分享 info bubuko img inf dir .com png mage cp /source-dirname/. /target-dirname(用.表示自己) 復制目錄下所有文件(隱藏文件與非隱藏文件)

python獲取目錄所有檔案並修改檔名隨機8位字元竄名字

class ChangeName(object): def getRandom(self): seed = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" sa = [] for