今天碰到一个关于BufferedReader的mark()问题,于是去google了一下,发现N年前一篇帖子(汗一个)和我遇到的问题一样,但貌似没有最终的明确结论。
写道
标 题: 关于BufferedReader的mark()问题
发信站: BBS 水木清华站 (Wed Apr 21 19:35:26 2004)
在做第三次的作业时,为了统计行数,我先用把文件读了一遍,然后要让文件指针指向文件头,于是我在文件的最开始mark()了一下,mark()的长度为file.length(),当指针指到文件末后用reset()指回来,但是我发现了一个奇怪的问题,如果文件的最后一个字符是中文,则一切正常,如果文件的最后一个字符是英文,则java.io.IOException: Mark invalid,这时如果使用mark()中的长度设为file.length()+1,才正确,我百思不得其解,希望大家能给我解答。我的代码如下:
myFile = new File(filename);
fr = new FileReader(myFile);
br = new BufferedReader(fr);
br.mark((int)myFile.length());
while (null != br.readLine())
{
line++;
}
br.reset();
我今天遇到的问题也是一个样的,测试代码如下
class BufferedReaderDemo {
public static void main(String[] args) throws IOException {
String s = "This is a © copyright symbol but this is & copy not.";
char buf[] = new char[s.length()];
s.getChars(0, s.length(), buf, 0);
CharArrayReader in = new CharArrayReader(buf);
BufferedReader f = new BufferedReader(in);
int c,d = 0;
f.mark(s.length() + 1); //这里如果写f.mark(s.length())在后面f.reset()时候就会报java.io.IOException: Mark invalid错误
while ((c = f.read()) != -1){
d++;
}
f.reset();
}
}
不知道为什么,希望大家帮我解答一下,谢谢。
分享到:
相关推荐
详解BufferedReader详解BufferedReader详解BufferedReader详解BufferedReader详解BufferedReader详解BufferedReader详解BufferedReader详解BufferedReader详解BufferedReader详解BufferedReader详解BufferedReader
BufferedReader 开发的结构
文件内容的读取 BufferedReader
BufferedReader 是缓冲字符输入流。它继承于Reader。 BufferedReader 的作用是为其他字符输入流添加一些缓冲功能。
BufferedReader的用法---马克-to-win java视频缓存输入流的介绍
没有堵塞,客户端和服务端简单的信息传递,利用了BufferedReader读。
NULL 博文链接:https://lisanlai.iteye.com/blog/673253
文件读写 BufferedReader BufferedWriter 去除代码后面空格 简单 readLine newLine flush
NULL 博文链接:https://chaoyi.iteye.com/blog/2084140
NULL 博文链接:https://wushipan-easy.iteye.com/blog/1831047
import java.io.BufferedReader
jdk api-BufferedReader基础、应用、实战
BufferedReader 是缓冲字符输入流。它继承于Reader。接下来通过本文给大家介绍BufferedReader的相关知识,需要的朋友参考下吧
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));//获取返回信息数据流 StringBuffer sb = new StringBuffer(""); //自定义缓冲,用于存放返回信息数据 String line = ...
BufferedReader与BufferedWriter分别继承于Reader和Writer类,分别为字符的读取和写入添加缓冲功能,这里我们就来看一下Java中BufferedReader与BufferedWriter类的使用示例:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int f = Integer.parseInt(br.readLine()); double c=5*(f-32); c=c/9; System.out.println("Changing it to Celsius is "+c); } }
javaIO流实现永久化查询添加学生信息-java-BufferedReader
主要介绍了InputStreamReader和BufferedReader用法及实例讲解的相关资料,需要的朋友可以参考下
图像格式转换 numpy.ndarray–>_io.BufferedReader 在项目中遇到问题:现有通过opencv的imread()函数读取的图像,需要将图像的格式转化为io.open()函数读取图像的格式来用于requests.post()发送图像文件。现整理问题...