黑马程序员技术交流社区
标题:
io流。。的read机制是什么机制啊。怪纳闷
[打印本页]
作者:
李厚斌
时间:
2014-3-30 00:39
标题:
io流。。的read机制是什么机制啊。怪纳闷
本帖最后由 李厚斌 于 2014-3-31 14:43 编辑
io流。。的read机制是什么机制啊。。即便再局部内没读完。。当再次调用的时候会接着继续读。难不成是read的特有机制。。没完全读完。会接着继续读?
class MyStringBuffer
{
private FileReader f;
MyStringBuffer(FileReader f)
{
this.f=f;
}
public String myLine() throws IOException
{
StringBuilder sb=new StringBuilder();
int num=0;
while((num=f.read())!=-1)
//难不成是read的特有机制。。没完全读完。会接着继续读?
{
if(num=='\n')
return sb.toString();
String m=sb.toString();
System.out.println("sb===="+sb.toString());
if(num=='\r')
continue;
else
sb.append((char)num);
}
if((sb.length())!=0)
return sb.toString();
System.out.println("sb=="+sb.toString());
return null;
}
public void myClose() throws IOException
{
f.close();
}
}
class Demo
{
public static void main(String[] args)throws IOException
{
FileReader fr=new FileReader("g.txt");
MyStringBuffer mbf=new MyStringBuffer(fr);
String line=null;
while((line=mbf.myLine())!=null)
{
System.out.println(line);
}
mbf.myClose();
}
}
class Demo
{
public static void main(String[] args)throws IOException
{
FileReader fr=new FileReader("g.txt");
int ch=0;
while((ch=fr.read())!='e')
{
System.out.println((char)ch);
}
while((ch=fr.read())!=-1)
{
System.out.println((char)ch);
}
}
}
read的特有机制。
2.
class Demo
{
public static void main (String[] args)throws IOException
{
BufferedReader br=new BufferedReader(new FileReader("2.txt"));
BufferedWriter bw=new BufferedWriter(new FileWriter("12.txt"));
String line=null;
int x=0;
while((line=br.readLine())!=null)
{
if(x!=0)//多个换行。
bw.newLine();
x++;
bw.write(line);
bw.flush();
}
bw.close();
br.close();
}
}
复制代码
作者:
谭荣强
时间:
2014-3-30 01:02
read方法就是这样,一次读一个字符,下一次继续上一次的地方再读取。
作者:
郭黎明
时间:
2014-3-30 08:48
while((num=f.read())!=-1)中read()方法一次只读一个字符,如果没读到结尾会接着上一次的位置接着读,当读到结尾时返回-1,readline()方法则是可以识别换行符,当读到换行符时这一行读取结束,返回读到的数据,返回的值不包括换行符,
作者:
董振冬
时间:
2014-3-30 10:14
每一行的读取,如果返回值不等于-1的时候,read会 继续读取,知道到这行的最后一个字符;
然后判定num是否到了换行处,如果读到了会读取下一行。
作者:
H-Deka
时间:
2014-3-30 10:21
read()中有个指针,他会记录当前读指针的位置,如果读了一次没有读完,指针记录当前读取到的位置,下次再调用此方法时会从指针标记的位置开始读取
作者:
为梦想而活着
时间:
2014-4-3 19:18
read
public int read()
throws IOException读取单个字符。在字符可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。
用于支持高效的单字符输入的子类应重写此方法。
返回:
作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1
抛出:
IOException - 如果发生 I/O 错误
复制代码
作者:
李维奥
时间:
2014-4-29 20:04
read()方法在JDK API的描述是这样的:读取单个字符。在字符可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。 也就是说read()方法一次读取一个字符,读到流的末尾时才结束。到达流结尾是返回-1;
Windows下的回车使用”\r\n“表示,不是应该先判断num=='\r'吗?
作者:
13556793092
时间:
2014-5-17 13:27
read不是你说的特有机制, while((num=f.read())!=-1)是根据你使用的流来决定读取的方式的,字节流就是一字节一字节读,字符流就是按字符流读取即两字节一次的读;当读到文件的末尾时,会返回-1;这里不等于-1就是当文件没到末尾就一直循环读取啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2