[LinkedIn] Text File Iterable

来源:互联网 发布:空燃比传感器正常数据 编辑:程序博客网 时间:2024/05/21 22:37

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 scannerpublic 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
原创粉丝点击