如何重新定位一个己经到文件尾的文件流? 以-1来判断是不是结束RandomAccessFile.seek(0)是到起点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最简单,但一定不是最好的方法,关掉原来的,new 一个新的FileInputStream 如果不用RandomAccessFile.seek(0),而用FileInputStream,FileReader这样的类时,又是如何处理? TO shine333(enihs):这样在做法上是绝对行得通的,但这样不太好吧,好象一般流的创建和关闭都是要花很多资源和时间的。 in.reset() 如果没有mart()方法的话 可设置流从头读起 import java.io.*;/** * Created by IntelliJ IDEA. * User: Administrator * Date: 2004-8-11 * Time: 14:58:40 * To change this template use File | Settings | File Templates. */public class StreamMark { public static void main(String[] args) throws IOException { FileInputStream fis; InputStreamReader isr; BufferedReader br; int fileSize; int data; fis = new FileInputStream("StreamMark.java"); fileSize = fis.available(); isr = new InputStreamReader(fis); br = new BufferedReader(isr, fileSize); System.out.println(fis.Supported()); System.out.println(br.Supported()); System.out.println(isr.Supported()); for (int i = 0; i < 3; i++) { br.(fileSize + 1); // Bypass EOF while ((data = br.read()) != -1) { System.out.print((char)data); } br.reset(); System.out.println("\ni = " + i); } }}正常情况下读写是一定要 Buffer 的如果文件非常小, 可以将文件完全 Buffer, 同时实现 () 和 reset() 功能如果是大文件, 可以选择部分 Buffer将 br = new BufferedReader(isr, fileSize); 中的 fileSize 换为希望的 Buffer 大小即可 请问br.(fileSize + 1);和br.(1)有什么区别吗?为什么不能直接用(1)将文件流直接指到文件开头的地方? to drugon(personal):如果你使用 br.(1),读两个字节 标签就作废, 调用 reset() 时会产生异常;br.(fileSize + 1) 代表将文件读完后标签不作废; 是在当前位置设置标签, reset 是跳转到设置好的标签的位置to alaal(穷街):不设置 默认是抛出异常 to registered(已注册) 是抛出异常 ,但你能告诉我加比不加有什么好处吗? shine333(enihs) 的方法可行你要是真考虑到效率的话,还是用RandomAccessFile吧 to alaal(穷街):本例中抛出异常后不会重置流异常代表一种错误如果你不处理这种错误那他就是 Bug如果你是在作试验, 这样压制异常无所谓如果你是在做产品, 你这样的实现方法是不妥的 ,而且容易埋下隐患 关于JFC——ApplictionWindow的系统托盘 很基础 但很麻烦的问题! 关于克隆的问题 请问有中文版的java帮助文件吗? 帮忙!!!!!!!!!!!!!!!! 在线等待高手解答 问一个关于eclipse设置颜色的问题、请帮忙解答,谢谢 我如何才能看到程序的结果 从一点点不会java到通过scjp,去掉十一happy的几天只用了1个月时间,小散分一次,见者有分 随机数是真的? 关于VRML的问题,请各位高手帮助。 如何由一个URL类得到一个File类?急!!
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2004-8-11
* Time: 14:58:40
* To change this template use File | Settings | File Templates.
*/
public class StreamMark {
public static void main(String[] args) throws IOException {
FileInputStream fis;
InputStreamReader isr;
BufferedReader br;
int fileSize;
int data; fis = new FileInputStream("StreamMark.java");
fileSize = fis.available();
isr = new InputStreamReader(fis);
br = new BufferedReader(isr, fileSize); System.out.println(fis.Supported());
System.out.println(br.Supported());
System.out.println(isr.Supported()); for (int i = 0; i < 3; i++) {
br.(fileSize + 1); // Bypass EOF
while ((data = br.read()) != -1) {
System.out.print((char)data);
}
br.reset();
System.out.println("\ni = " + i);
}
}
}正常情况下读写是一定要 Buffer 的
如果文件非常小, 可以将文件完全 Buffer, 同时实现 () 和 reset() 功能
如果是大文件, 可以选择部分 Buffer
将 br = new BufferedReader(isr, fileSize); 中的 fileSize 换为希望的 Buffer 大小即可
如果你使用 br.(1),
读两个字节 标签就作废, 调用 reset() 时会产生异常;
br.(fileSize + 1) 代表将文件读完后标签不作废;
是在当前位置设置标签, reset 是跳转到设置好的标签的位置to alaal(穷街):
不设置 默认是抛出异常
本例中抛出异常后不会重置流异常代表一种错误
如果你不处理这种错误那他就是 Bug
如果你是在作试验, 这样压制异常无所谓
如果你是在做产品, 你这样的实现方法是不妥的 ,而且容易埋下隐患