要求

编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。

  1. class MyFSDataInputStream extends FSDataInputStream {
  2. BufferedReader br; // 内置一个缓存读取
  3. public MyFSDataInputStream(InputStream in) {
  4. super(in);
  5. this.br = new BufferedReader(new InputStreamReader(in));
  6. }
  7. public String readline() throws IOException {
  8. String content = null;
  9. // 读取一行,如果不为空,则返回读取内容
  10. if((content = this.br.readLine()) != null) {
  11. return content;
  12. }else {
  13. return null;
  14. }
  15. }
  16. }

使用

  1. MyFSDataInputStream mf = new MyFSDataInputStream(getIt);
  2. String c = mf.readline();
  3. System.out.println(c);
  4. c = mf.readline();
  5. System.out.println(c);
  6. c = mf.readline();
  7. System.out.println(c);

image.png