黑马程序员技术交流社区
标题:
读取后的文件无法换行怎样才可以换行
[打印本页]
作者:
黑马张伟
时间:
2011-12-21 07:56
标题:
读取后的文件无法换行怎样才可以换行
本帖最后由 黑马张伟 于 2011-12-22 18:20 编辑
import java.io.FileReader;
import java.io.IOException;
/*
明白了BuffredReader类中特有的方法readLine的原理后
可以自定义一个类中包含和readLine原理一样的方法
来模拟一下BuffreedReader
*/
public class BufferReader {
public static void main(String[] args) throws IOException{
FileReader fr=new FileReader("se.txt");
MyBufferedReader mybuf=new MyBufferedReader(fr);
String line=null;
while((line=mybuf.myReadLine())!=null)
{
System.out.println(line);
}
mybuf.myClose();
}
}
class MyBufferedReader{
private FileReader r;
MyBufferedReader(FileReader r)
{
this.r=r;
};
//可以一次读一行数据的方法
public String myReadLine(){
StringBuilder sb=new StringBuilder();
int ch=0;
try {
while((ch=r.read())!=-1)
{
if(ch=='\r')
continue;;
if(ch=='\n')
continue;
else
sb.append((char)ch);
}
} catch (IOException e) {
e.printStackTrace();
}
if(sb.length()!=0)
return sb.toString();
return null;
}
public void myClose(){
try {
r.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
作者:
songxingchao
时间:
2011-12-21 08:31
if(ch=='\n')
continue;
这里不应该是continue了吧? 应该是break;
因为是\n是换行符, 如果换行了,readline这个函数就应该返回了, 每次只读一行的啊。
作者:
李晓斌
时间:
2011-12-21 08:49
因为在Windeows操作系统中换行的操作符为"\r\n",所以
if(ch=='\r')
continue;
这个没错,下面错了,
if(ch=='\n')
continue; //这里不应该是continue了,读到'\n'时,应该要换行了,换行之前要将前面缓冲区中的字符返回回去,所以要return sb.toString();试试看吧
作者:
海中的游弋草
时间:
2011-12-21 09:00
//可以一次读一行数据的方法
public String myReadLine(){
StringBuilder sb=new StringBuilder();
int ch=0;
try {
while((ch=r.read())!=-1)
{
if(ch=='\r')
continue;;
if(ch=='\n')
sb.append((char)ch); ------这块代码应该这样写 返回sb.append((char)ch); 就OK
else
sb.append((char)ch);
}
} catch (IOException e) {
e.printStackTrace();
}
if(sb.length()!=0)
return sb.toString();
return null;
}
刚调试好
作者:
刘基军
时间:
2011-12-21 09:12
import java.io.FileReader;
import java.io.IOException;
/*
明白了BuffredReader类中特有的方法readLine的原理后
可以自定义一个类中包含和readLine原理一样的方法
来模拟一下BuffreedReader
*/
public class BufferReader {
public static void main(String[] args) throws IOException{
FileReader fr=new FileReader("se.txt");
MyBufferedReader mybuf=new MyBufferedReader(fr);
String line=null;
while((line=mybuf.myReadLine())!=null)
{
System.out.println(line);
}
mybuf.myClose();
}
}
class MyBufferedReader{
private FileReader r;
MyBufferedReader(FileReader r)
{
this.r=r;
};
//可以一次读一行数据的方法
public String myReadLine(){
StringBuilder sb=new StringBuilder();
int ch=0;
try {
while((ch=r.read())!=-1)
{
if(ch=='\r')
continue;
if(ch=='\n')
break; //应该是break,本身该方法就只是一行一行的读取,当读取到换行符时,说明已到一行了,不该再继续读下去,所以应使用“break;”
else
sb.append((char)ch);
}
} catch (IOException e) {
e.printStackTrace();
}
if(sb.length()!=0)
return sb.toString();
return null;
}
public void myClose(){
try {
r.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
复制代码
作者:
黑马张伟
时间:
2011-12-21 22:47
谢谢大家有了你们学习起来简单多了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2