2014-07-21 35 views
2

這是我的java代碼的一部分,這段代碼在(A.java:8)處拋出(java.io.IOException),請大家幫忙。FileReader#mark()is throwing java.io.IOException

import java.io.FileReader; 


public class A { 

    public A() throws Exception { 
     FileReader r = new FileReader("a.txt"); 
     r.mark(0); 

     for(int i=0; i<27; i++) 
      System.out.println((char)r.read()); 

     r.reset(); 

     for(int i=0; i<27; i++) 
      System.out.println((char)r.read()); 

     r.close(); 
    } 

    public static void main(String arg[]) throws Exception { 
     new A(); 
    } 
} 
+0

您需要封閉'mark'在一個try/catch,你應該打印:

你可以通過閱讀的JavaDoc鏈接,看到它沒有覆蓋,或從Reader繼承markSupported()確定這異常信息來幫助我們。這是JavaDoc在Exception上說的「mark」:「如果流不支持mark(),或者發生其他一些I/O錯誤」。所以我們需要更多信息。 – Brian

+0

在java.io.InputStream.reset(InputStream.java:347) \t在java.io.FilterInputStream.reset(FilterInputStream.java:226) \t在A. (A.java:15) \t在甲.main(A.java:24) – Shafu

回答

2

FileReader不從grepcode支持mark()功能

下面的代碼的相關部分:

public void mark(int readAheadLimit) throws IOException { 
     throw new IOException("mark() not supported"); 
} 
+0

所以我應該使用mark();和reset(); ??? – Shafu

+0

你可以使用'RandomAccessFile',或者使用兩個Filereader或者在一個字符串中讀取這個文件並且使用這個字符串作爲第二個循環。 – Jens

+0

我想了解mark();和reset();方法被使用請告訴 – Shafu

2

FileReader不支持標記操作。

public boolean markSupported() 

Tells whether this stream supports the mark() operation. 
The default implementation always returns false. 
Subclasses should override this method. 
相關問題