[LinkedIn] Text File Iterable

Implement a (Java) Iterable object that iterates lines one by one from a text file..

/** A reference to a file. */
public class TextFile implements Iterable<String>. From 1point 3acres bbs
{
  public TextFile(String fileName) { // please implement this

  /** Begin reading the file, line by line. The returned Iterator.next() will return a line. */
  @Override
  public Iterator<String> iterator() { // please implement this

ANSWER: An implementation of this using bufferedReader:

public class TextFile implements Iterable<String>{

        private BufferedReader br;

        public TextFile(String fileName) throws FileNotFoundException {
            br = new BufferedReader(new FileReader(fileName));
        }

        @Override
        public Iterator<String> iterator() {
                return new Iterator<String>() {
            @Override
            public boolean hasNext() {
                try {
                    br.mark(1);
                    if (br.read() < 0) {
                        return false;
                    }
                    br.reset();
                    return true;
                } catch (IOException e) {
                    return false;
                }
            }

            @Override
            public String next() {
                try {
                    return br.readLine();
                } catch (IOException e) {
                    return null;
                }
            }
            @Override
            public void remove() {
                throw new UnsupportedOperationException();
            }

        };
        }
}

From Here

//Another implementation using scanner
public class TextFile implements Iterable<String> {
 public TextFile(String fileName) { // please implement this }
 // Begin reading the file, line by line. The returned Iterator.next() will
 // return a line.
 @Override
 public Iterator<String> iterator() { // please implement this }
}

public class TextFile implements Iterable<String> {

 Scanner scanner;

 public TextFile(String fileName) {
   try {
     scanner = new Scanner(new File(fileName));
   } catch(Exception e) { }
 }

 @Override
 public Iterator<String> iterator() {
   return new Iterator<String>() {
     @Override
     public boolean hasNext() {
       return scanner.hasNext();
     }
     @Override
     public String next() {
       if (hasNext()) {
         return scanner.nextLine();
       } else {
         return null;
       }
     }
     @Override
     public void remove() {
       throw new UnsupportedOperationException();
     }
   };
 }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值