我无法在读取txt文件时将BufferedReader重置为随机点。我在文件中输入文本的示例是:number = 10;
。
代码的最后一部分System.out.println((char)c);
将打印出;
而不是1
。
在这个简单的例子中,我做错了什么?
我的代码:
String filePath = "data.txt";
BufferedReader br = new BufferedReader(new FileReader(filePath));
String line = "";
int c = 0;
while ((c = br.read()) != -1) {
if((char)c == '1') {
br.mark(1000);
}
System.out.print((char)c);
}
br.reset();
c = br.read();
System.out.println((char)c);
答案 0 :(得分:0)
使用您的代码和我使用.txt
作为一行创建的虚拟number=10;
文件。 c = br.read()
会返回0
。
java.io.BufferedReader.mark(int)方法标记流中的当前位置。调用reset()会将流从here重新定位到此点。
所以基本上它会在你指定为标记的字符之后打印字符。
如果您希望打印剩下的线路,可以使用:
String line = br.readLine();
如果您因某种原因想要获取1
,则只需修改代码即可:
c = br.read()+1;
答案 1 :(得分:-2)
我尝试了你的代码,首先是打印' 0'就我而言。
实际上,当您reset
之后1
之前使用1
放置光标时,1
。
但根据您的需要,您需要输出为mark
,如果您在1
之前的字符上使用r
,则可以输出。
就像我想打印e
所以我在while ((c = br.read()) != -1) {
if((char)c == 'e') {
br.mark(1000);
}
System.out.print((char)c);
}
br.reset();
c = br.read();
System.out.println((char)c);
上添加了标记,如下所示:
>>> from copy import deepcopy
>>> d1={'cardinal':['VA','OH'], 'meadowlark':['OR']}
>>> d2={'meadowlark':['WY'], 'cardinal':['VA', 'IL'], 'oriole':['MD']}
>>>
>>> d = deepcopy(d1)
>>> for key, lst in d2.items():
... d.setdefault(key, []).extend(lst)
...
>>> d
{'meadowlark': ['OR', 'WY'], 'oriole': ['MD'], 'cardinal': ['VA', 'OH', 'VA', 'IL']}
>>> d1
{'meadowlark': ['OR'], 'cardinal': ['VA', 'OH']}
>>> d2
{'meadowlark': ['WY'], 'oriole': ['MD'], 'cardinal': ['VA', 'IL']}
希望事情清楚。