1. 程式人生 > >HDFS檔案的建立以及向檔案中寫入內容

HDFS檔案的建立以及向檔案中寫入內容

package com.yc.hadoop.hdfs;


import java.net.URI;
import java.util.Scanner;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.Progressable;
import org.apache.log4j.Logger;


/**
 * 檔案的建立以及向檔案中寫入內容
 * @company 源辰資訊
 * @author navy
 */
public class Hadoop_HdfsApi011 {
public static void main(String[] args) {
Logger log = Logger.getLogger(Hadoop_HdfsApi011.class); // 建立日誌記錄器


try {
Configuration conf = new Configuration(); // 載入配置檔案
URI uri = new URI("hdfs://192.168.30.130:9000/");  // 連線資源位置
FileSystem fs = FileSystem.get(uri, conf); // 建立檔案系統例項物件


// 建立目錄   刪除目錄  hadoop fs -rm -f <目錄名>
Path dir = new Path("files"); // 要建立的目錄。Path為hadoop檔案物件, 類似java的File類


if (fs.exists(dir)) { // 判斷檔案是否存在
log.debug(dir + " 存在...");
//檔案存在, 換一個名字
} else {
log.debug(dir + " 不存在,開始建立...");
if (fs.mkdirs(dir)){
log.debug(dir + " 目錄建立成功...");
} else {
log.debug(dir + " 目錄建立失敗...");
}
}

// 建立檔案
Path file = new Path(dir, "data.txt");
if (fs.exists(file)) { // 檔案是否存在
log.debug(file + " 檔案存在...");
} else {
if (fs.createNewFile(file)) { // 建立檔案
log.debug(file + " 檔案建立成功...");
} else {
log.debug(file + " 檔案建立失敗...");
}
}


// 在檔案中新增 內容
FSDataOutputStream fdos = null; // 檔案系統資料輸出流

if (fs.exists(file)){ // 如果檔案存在
fdos = fs.append(file, 4096, new Progressable() {
@Override
public void progress() {
System.out.println(">>"); // 進度提示
}
});
} else {  // 檔案不存在
fdos = fs.create(file, true, 4096, new Progressable() {
@Override
public void progress() {
System.out.println("..."); // 進度提示
}
});
}

// InputStream in = new FileInputStream("yc.txt");
// IOUtils.copyBytes(in, out, 4096, true);


Scanner input = new Scanner(System.in);  // 掃描器物件
System.out.print("請輸入內容:");
String word = input.nextLine();
fdos.write(word.getBytes());  // 向檔案系統中的檔案中寫入內容
fdos.flush();
fdos.close();
input.close();
System.out.println("寫入資料完成...");
} catch (Exception e) {
e.printStackTrace();
}
}
}