在用Hadoop api时,会遇见一个情况,每次都会覆盖原来的内容
FileSystem fs=getFs();
FSDataOutputStream fSDataOutputStream= fs.create(new Path("/user/lf_by_pro/zba_dwa.db/zhanggf/a.txt"));
fSDataOutputStream.write(123); // 2次 第2次会覆盖第一次
fSDataOutputStream.write("啧啧".getBytes("UTF-8"));
fSDataOutputStream.flush();
fSDataOutputStream.close();
提供一种方法 append
FileSystem fs=getFs();
String filePath = "/user/lf_by_pro/zba_dwa.db/zhanggf/c.txt";
FSDataOutputStream fileOutputStream = null;
Path hdfsPath = new Path(filePath);
try {
if (!fs.exists(hdfsPath)) {
fileOutputStream = fs.create(hdfsPath,false);
}else{
fileOutputStream = fs.append(hdfsPath);
}
fileOutputStream.writeUTF("789"); //字节文件
fileOutputStream.write("嘿哈".getBytes());
fsDataOutputStream.writeBytes(line+"\n"); // linux上需要换行需要手动\n
} catch (IOException e) {
e.printStackTrace();
}finally {
if(fileOutputStream!=null){
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
fs.close();
}
}