import java.io.*;class BufferedStream
{
public static void main(String args[])
{
BufferedStream bs = new BufferedStream(); try
{
InputStream in = new FileInputStream("cn.txt");
//创建一个256字节的缓存区
BufferedInputStream bin = new BufferedInputStream(in, 256);
String str = bs.readLine(bin);
while(str!=null){
System.out.println(str);
str = bs.readLine(bin);
}
}
catch (IOException ex) {
System.err.println(ex);
}
} public String readLine(BufferedInputStream in) throws IOException
{ //将bufferedinputstream按行读取
StringBuffer sb = new StringBuffer(); int c = in.read();
while (c != -1)
{
if (c == '\n'){
sb.append('\n');
break;
}
if (c == '\r')
{
in.(1);
if (in.read() != '\n')
in.reset();
break;
}
sb.append((char)c);
c = in.read();
} return sb.toString();
}请问下上面那个程序为什么无法显示cn.txt文件中的内容,只是刷的一下就没了,那证明while循环还一直在跳,可是bs.readLine(bin)怎么会取不完?谢谢各位帮助
{
public static void main(String args[])
{
BufferedStream bs = new BufferedStream(); try
{
InputStream in = new FileInputStream("cn.txt");
//创建一个256字节的缓存区
BufferedInputStream bin = new BufferedInputStream(in, 256);
String str = bs.readLine(bin);
while(str!=null){
System.out.println(str);
str = bs.readLine(bin);
}
}
catch (IOException ex) {
System.err.println(ex);
}
} public String readLine(BufferedInputStream in) throws IOException
{ //将bufferedinputstream按行读取
StringBuffer sb = new StringBuffer(); int c = in.read();
while (c != -1)
{
if (c == '\n'){
sb.append('\n');
break;
}
if (c == '\r')
{
in.(1);
if (in.read() != '\n')
in.reset();
break;
}
sb.append((char)c);
c = in.read();
} return sb.toString();
}请问下上面那个程序为什么无法显示cn.txt文件中的内容,只是刷的一下就没了,那证明while循环还一直在跳,可是bs.readLine(bin)怎么会取不完?谢谢各位帮助
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(fr);
BufferedReader br=new BufferedReader(br);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
)
while(str!=null){
System.out.println(str);
str = bs.readLine(bin);
}
因为sb.toString()是永远不为null的。
这里你用c != -1来判断文件是否结束是对的,但是你没有用它来控制
System.out.println(str);
str = bs.readLine(bin);
导致你即使文件已经读到头了还在一直打屏。建议加一个全局的标志位,在主函数中用此标志位来控制打屏。调用的readLine函数一旦读到头了就将此标志为置位。
import java.io.File;
import java.io.FileReader;public class BufferedStream {
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(file);
BufferedReader br=new BufferedReader(br);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
}这个代码 最后的 .close语句有问题。
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(file);
BufferedReader br=new BufferedReader(fr);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
)是不是应该这样写哦?
public static void main(String args[]){
File file=new File("c:/cn.txt");
FileReader fr=new FileReader(file);
BufferedReader br=new BufferedReader(fr);
String s=null;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close;
fr.close;
}
)
对么??