Topic: 求教输入流问题 |
Print this page |
1.求教输入流问题 | Copy to clipboard |
Posted by: 白天ling Posted on: 2005-05-21 00:04 package filetest; import java.io.*; /** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright 2005</p> * <p>Company: </p> * @author not attributable * @version 1.0 */ public class FilePutStream { public static void main(String[] args) { try{ File f = new File("temp.txt"); if(!f.exists()){ f.createNewFile(); } /** * BufferedOutputStrean Demo */ FileOutputStream fous = new FileOutputStream; String outString =new String("abcdee"); BufferedOutputStream bps = new BufferedOutputStream(fous); bps.write(outString.getBytes()); bps.flush(); System.out.println("文件已经写入"); fous.close(); bps.close(); /** * BufferedInputStrean Demo */ FileInputStream fis = new FileInputStream; BufferedInputStream bis = new BufferedInputStream(fis); byte bArry[] = new byte[bis.available()]; bis.read(bArry); String rStr = new String(bArry); System.out.println(rStr); /*for(int i = 0 ; i < bis.available(); i++){ System.out.println((char)bis.read()); }*/ bis.close(); fis.close(); } catch(Exception ept){ System.out.println(ept.getMessage()); } } } 把 byte bArry[] = new byte[bis.available()]; bis.read(bArry); String rStr = new String(bArry); System.out.println(rStr); 改为 /*for(int i = 0 ; i < bis.available(); i++){ System.out.println((char)bis.read()); }*/ 只能输出 abc三个数 不知道是什么原因? |
2.Re:求教输入流问题 [Re: 白天ling] | Copy to clipboard |
Posted by: 8166680 Posted on: 2005-05-23 02:37 byte bArry[] = new byte[bis.available()]; bis.read(bArry); String rStr = new String(bArry); System.out.println(rStr); 一般都是用这种方法 你下面这种我没用过。试了一下。只有abc ,问题出在bis.available()上 我估计了一下。 public synchronized int available() throws IOException 这个方法的返回值是: 从当前输入流中可无阻塞读取的字节数。 如果用在FOR语句中和 i 比较的话就转换成int型。你本来有6个字节。那就是3了 所以只输出了3个字符.我把你的字符串改成8个就输出4个。改成10个就只输出5个 楼主要是有更好的解释请在后面贴出来。互相学习 |
3.Re:求教输入流问题 [Re: 白天ling] | Copy to clipboard |
Posted by: 白天ling Posted on: 2005-05-23 16:08 原因在于 for(int i = 0 ; i < bis.available(); i++) 里面,不能用 bis.available()作为判断条件,因为没读一次bis.available()的值就会减1,所以只运行3次,改为下面的就对了 int size = bis.available(); for(int i = 0 ; i < size ; i++){ // System.out.println(bis.available()); System.out.println((char)bis.read()); //System.out.println(bis.available()); } |
4.Re:求教输入流问题 [Re: 白天ling] | Copy to clipboard |
Posted by: 8166680 Posted on: 2005-05-23 23:51 爽。学到点东东 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |