BufferReader怎样将换行也读取出来 在传输的字节数据的时候使用的BufferReader读取的像"HelloWorld"的字符串中包含有换行的情况,读取出来后始终没有换行的情况,读取的结果是"HelloWorld"。应该怎样读取出来原字符串的情况"HelloWorld" 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你加入换行的转义字符译(\n)试试 "Hello\nWorld" 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(); } }}试试看 我传输的"HelloWorld"不是我手动写的,是系统自动传输的。 上面看错了,你的意思是原本是换行的就输出换行是吧!package com.test.bufferreader;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("c:tzh.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(); } }} StringBuffer strBuf = new StringBuffer(); while ((i = bufferedReader.read()) != -1) { strBuf.append(bufferedReader.readLine()); } 读取完一行后添加stringBuffer.append(System.getProperty("line.separator")); 我使用的方法是,将每一行的数据读取出来放到List或者数组中,最后再将List或者数组中的组合成一个就可以了。这种方法确实可行,但是比较麻烦。 jcreator 报下面的错误!!在dos下没有任何问题!!求解··· 关于jdbc对有自增列的表的添加删除出现的问题 如何将二维数组数据导入JTable里? 这个能用递归解决么,不行该怎么解决 client.cd(".");如何使用 如何经入子目录(UNIX) 关于windows的问题.(JAVA如何关闭一个windows进程,如何修改windows设置) 我想做一个好友管理系统的小程序,用jbX SQL语句怎么用变量? EditPlus 2中如何实现对java编译和调试?立刻给分 刚接触java 问个基本的配置问题! java截图小程序 java处理html的问题
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();
}
}
}试试看
我传输的
"Hello
World"
不是我手动写的,是系统自动传输的。
import java.io.IOException;/*
明白了BuffredReader类中特有的方法readLine的原理后
可以自定义一个类中包含和readLine原理一样的方法
来模拟一下BuffreedReader
*/
public class BufferReader {
public static void main(String[] args) throws IOException{
FileReader fr=new FileReader("c:tzh.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();
}
}
}
StringBuffer strBuf = new StringBuffer();
while ((i = bufferedReader.read()) != -1) {
strBuf.append(bufferedReader.readLine());
}
stringBuffer.append(System.getProperty("line.separator"));
这种方法确实可行,但是比较麻烦。