您好,登錄后才能下訂單哦!
這篇“Java API操作HDFS方法是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java API操作HDFS方法是什么”文章吧。
在net.xxr.hdfs
包里創建PathToFileOrDir
類
package net.xxr.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import java.net.URI; /** * 功能:判斷路徑指向目錄還是文件 */ public class PathToFileOrDir { public static void main(String[] args) throws Exception { // 創建配置對象 Configuration conf = new Configuration(); // 設置數據節點主機名屬性 conf.set("dfs.client.use.datanode.hostname", "true"); // 定義uri字符串 String uri = "hdfs://master:9000"; // 創建文件系統對象 FileSystem fs = FileSystem.get(new URI(uri), conf, "root"); // 創建路徑對象,指向目錄 Path path2 = new Path("/ied01"); if (fs.isDirectory(path2)) { System.out.println("[" + path2 + "]指向的是目錄!"); } else { System.out.println("[" + path2 + "]指向的是文件!"); } // 創建路徑對象,指向文件 Path path3 = new Path("/lzy01/test2.txt"); if (fs.isFile(path3)) { System.out.println("[" + path3 + "]指向的是文件!"); } else { System.out.println("[" + path3 + "]指向的是目錄!"); } } }
結果
在net.xxr.hdfs
包里創建DeleteFileOrDir
類
刪除/lzy/hello.txt
文件
編寫deleteFile()
方法
package net.xxr.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.Test; import java.net.URI; /** * 功能:刪除目錄或文件 */ public class DeleteFileOrDir { @Test public void deleteFile() throws Exception { // 創建配置對象 Configuration conf = new Configuration(); // 設置數據節點主機名屬性 conf.set("dfs.client.use.datanode.hostname", "true"); // 定義uri字符串 String uri = "hdfs://master:9000"; // 創建文件系統對象 FileSystem fs = FileSystem.get(new URI(uri), conf, "root"); // 創建路徑對象(指向文件) Path path = new Path(uri + "/lzy01/hello.txt"); // 刪除路徑對象指向的文件(第二個參數表明是否遞歸,刪除文件,不用遞歸) boolean result = fs.delete(path, false); // 根據返回結果提示用戶 if (result) { System.out.println("文件[" + path + "]刪除成功!"); } else { System.out.println("文件[" + path + "]刪除失敗!"); } } }
結果
利用Hadoop WebUI界面查看
再運行deleteFile()
測試方法,查看結果
可以在刪除文件之前,判斷文件是否存在,需要修改代碼
package net.xxr.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.junit.Test; import java.net.URI; /** * 功能:刪除目錄或文件 */ public class DeleteFileOrDir { @Test public void deleteFile() throws Exception { // 創建配置對象 Configuration conf = new Configuration(); // 設置數據節點主機名屬性 conf.set("dfs.client.use.datanode.hostname", "true"); // 定義uri字符串 String uri = "hdfs://master:9000"; // 創建文件系統對象 FileSystem fs = FileSystem.get(new URI(uri), conf, "root"); // 創建路徑對象(指向文件) Path path = new Path(uri + "/lzy01/hi.txt"); // 判斷路徑對象指向的文件是否存在 if (fs.exists(path)) { // 刪除路徑對象指向的文件(第二個參數表明是否遞歸,刪除文件,不用遞歸) boolean result = fs.delete(path, false); // 根據返回結果提示用戶 if (result) { System.out.println("文件[" + path + "]刪除成功!"); } else { System.out.println("文件[" + path + "]刪除失敗!"); } } else { System.out.println("文件[" + path + "]不存在!"); } } }
結果
刪除/ied01
目錄
編寫deleteDir()
方法
@Test public void deleteDir() throws Exception { // 創建配置對象 Configuration conf = new Configuration(); // 設置數據節點主機名屬性 conf.set("dfs.client.use.datanode.hostname", "true"); // 定義uri字符串 String uri = "hdfs://master:9000"; // 創建文件系統對象 FileSystem fs = FileSystem.get(new URI(uri), conf, "root"); // 創建路徑對象(指向目錄) Path path = new Path(uri + "/ied01"); // 判斷路徑對象指向的目錄否存在 if (fs.exists(path)) { // 刪除路徑對象指向的目錄(第二個參數表明是否遞歸,刪除文件,要遞歸) boolean result = fs.delete(path, true); // 根據返回結果提示用戶 if (result) { System.out.println("目錄[" + path + "]刪除成功!"); } else { System.out.println("目錄[" + path + "]刪除失敗!"); } } else { System.out.println("目錄[" + path + "]不存在!"); } }
再運行deleteDir()
方法,查看結果
進行三個層面的判斷:判斷類型(目錄或文件)、判斷是否存在、判斷刪除是否成功
刪除/ied03/exam.txt
文件和/ied02
目錄
編寫delete()
方法
@Test public void delete() throws Exception { // 創建配置對象 Configuration conf = new Configuration(); // 設置數據節點主機名屬性 conf.set("dfs.client.use.datanode.hostname", "true"); // 定義uri字符串 String uri = "hdfs://master:9000"; // 創建文件系統對象 FileSystem fs = FileSystem.get(new URI(uri), conf, "root"); // 定義隨機對象 Random random = new Random(); // 產生隨機整數 - [0, 1] int choice = random.nextInt(100) % 2; // 定義路徑字符串 String[] strPath = {"/ied03/exam.txt", "/ied02"}; // 創建路徑對象(指向目錄或文件) Path path = new Path(uri + strPath[choice]); // 判斷類型:目錄或文件 String type = ""; if (fs.isDirectory(path)) { type = "目錄"; } else { type = "文件"; } // 判斷存在性 if (fs.exists(path)) { // 刪除路徑對象指向的目錄或文件 boolean result = fs.delete(path, true); // 判斷刪除是否成功 if (result) { System.out.println(type + "[" + path + "]刪除成功!"); } else { System.out.println(type + "[" + path + "]刪除失敗!"); } } else { System.out.println(type + "[" + path + "]不存在!"); } }
以上就是關于“Java API操作HDFS方法是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。