这个程序将一个文件读取两编利用了FileSystem的open方法创建一个InputStream赋值给FSDataInputStream。
import java.io.IOException;
import java.net.URI;
import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class Filesystemdoublecat {
public static void main(String[] args) {
// TODO Auto-generated method stub
String uri = args[0];
FSDataInputStream in = null;
Path path = new Path(uri);
System.out.println(path);
Configuration con = new Configuration();
try {
FileSystem fs = FileSystem.get(URI.create(uri),con);
in = fs.open(new Path(uri));
IOUtils.copy(in, System.out);
in.seek(0);//用seek函数将读取位置一道0处
IOUtils.copy(in, System.out);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
IOUtils.closeQuietly(in);
}
}
}