我如何一次读取文件x字节?在java中

时间:2011-02-22 11:09:28

标签: java file

我想在Java中读取一个文件,一次x个字符。然后我会用字符串做一些事情,并希望从我离开的地方继续。我该怎么办呢?

编辑:

目标文件是一个简单的文本文件。

2 个答案:

答案 0 :(得分:7)

首先,您需要区分字节字符。您可以一次从InputStream读取一定数量的字节(作为最大数字;不能保证您将获得所需的所有字节)并且您可以从{{1一次多个字符(同样,最多)。

听起来你可能希望在Reader周围使用InputStreamReader,指定相应的字符编码,然后从InputStream读取。如果你必须有一个完全个字符,你需要循环 - 例如:

InputStreamReader

答案 1 :(得分:0)

您是否尝试过使用BufferedReader?它定义read(char[], int, int)几乎完全符合您的要求。也就是说,它试图填充缓冲区时递归调用read。

使用示例:

char[] chars = new char[length];
reader.read(chars,0,length);
String str = String.valueOf(chars);

文档:

  

public int read(char [] cbuf,                  int off,                  int len)           抛出IOException

     

此方法实现Reader类的相应读取方法的常规协定。作为额外的便利,它尝试通过重复调用底层流的读取方法来读取尽可能多的字符。 此迭代读取将继续,直到满足以下条件之一:

     
      
  • 已阅读指定数量的字符
  •   
  • 基础流的read方法返回-1,表示文件结束,或
  •   
  • 基础流的ready方法返回false,表示进一步的输入请求将被阻止。
  •   
     

如果对基础流的第一次读取返回-1以指示文件结束,则此方法返回-1。否则,此方法返回实际读取的字符数。

最后一点很重要,因为这意味着可以阻止的流可能返回的字符数少于预期。虽然从本地文件读取时,读取器或流应始终具有可读取的字节。