首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

[],读取文本文件时,readLine认为“回车符”是一行结束的有关问题

2013-08-20 
[在线等]求救,读取文本文件时,readLine认为“回车符”是一行结束的问题本帖最后由 kerafan 于 2013-08-14 15

[在线等]求救,读取文本文件时,readLine认为“回车符”是一行结束的问题
本帖最后由 kerafan 于 2013-08-14 15:19:40 编辑 我有个文件,里面有三个字段,用|分割,例如内容是:030105010500154859_01|小港新村干#06杆台架[回车符]|02[换行符]。
因为中间那个字段有个回车符,所以用BufferedReader的readLine方式,会读出两行来:
第一行:030105010500154859_01|小港新村干#06杆台架
第二行:|02
我本来是想读出成一个String,然后按照“|”分隔符分割成三个字段。现在不知道怎么做了?

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class UTest1 {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(new File("1.txt")));
String line = null;
while((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
try {
br.close();
} catch (IOException e1) {
}
}
}
}

[解决办法]
看来你是使用split的时候出的问题吧!
你看下这样:

public static void main(String[] args) {


StringBuffer sub=new StringBuffer();
BufferedReader br=null;
try {
br=new BufferedReader(new FileReader(new File("f:/1.txt")));
String line=null;

while((line=br.readLine())!=null)
{
sub.append(line+"");
}

String r=sub.toString();

String [] result=r.split("\\
[解决办法]
");

for (int i = 0; i < result.length; i++) {

System.out.println(result[i]);

}

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block


e.printStackTrace();
}

}


[解决办法]


String line = null;
String result="";
 while((line = br.readLine()) != null) {
                System.out.println(line);
                result+=line;
            }

楼主是不是要一行一行的解析? 如果要一行一行的解析 那肯定没办法跳过换行符了 因为java可不认识到底哪个换行符才是你认为的真的换行符
[解决办法]
建议楼主利用read方法自己写一个readLine方法,此方法读到回车符便跳过,遇到换行符或者回车符后紧跟着换行符的情况则返回。这样的话,读你自己的文件的时候就不会出问题了。
[解决办法]
我这里的行结尾符号是\0,我这么搞的

Socket socket = new Socket("xxx", 8888);
            socket.setTcpNoDelay(true);
            BufferedReader bReader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
            BufferedWriter bWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8"));
            bWriter.write(protocol.toString());
            bWriter.flush();
            StringBuffer sb = new StringBuffer();
            int c = 0;
            while ((c = bReader.read()) != '\0' && c != -1) {
                sb.append((char) c);
            }
            bWriter.close();
            bReader.close();
            socket.close();

热点排行