Topic: 请教BufferedReader问题 |
Print this page |
1.请教BufferedReader问题 | Copy to clipboard |
Posted by: renaldo Posted on: 2004-08-31 08:56 使用BufferedReader的readline方法一行一行的读取文件,原来文件的每一行的长度是定长的(当中有空格),但是读出来的字符串好像忽略了空格,即变成不定长了。 请问,怎样让他不忽略空格呢? |
2.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: why Posted on: 2004-08-31 09:14 I don't think it will 忽略空格 please double check. |
3.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: renaldo Posted on: 2004-08-31 09:24 我试过了。独出来的字符串长度不一。 我把第一行置空,结果长度变为零了。 要读取的文件是一个TXT文本,由于是数据库中倒出来的,所以每行中,每个字段长度统一(长度不足的右边补满空格)。 我的程序: FileReader fr=new FileReader(path); BufferedReader br=new BufferedReader(fr); String record=br.readLine(); while(record!=null) { out.println("<br>"+record.length()); } |
4.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: why Posted on: 2004-08-31 10:00 I still don't think so while the API doc doesn't say anything. BTW, your little program doesn't work: String record=br.readLine(); while(record!=null) { out.println("<br>"+record.length()); // why would you use "<br"? record = br.readLine(); // it will loop forever without sth like this } |
5.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: floater Posted on: 2004-08-31 10:04 looks like he is printing out to serlvet's outstream. |
6.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: renaldo Posted on: 2004-08-31 10:09 这是jsp里面的代码。 完整的页面代码: 要读取的文本文件: test.txt <%@page contentType="text/html;charset=GB2312" import="java.io.*"%> <html> <head><title>JSP Page</title></head> <body> <br> <br> <br> <form method="GET"> <p align="center"><input type="file" name="filepath" size="40"></p> <p align="center"><input type="submit" value="导入" name="submit"></p> </form> <% if (request.getParameter("filepath") != null) { String path =new String(request.getParameter("filepath").getBytes("ISO8859_1")); out.println(path); FileReader fr=new FileReader(path); BufferedReader br=new BufferedReader(fr); String record=br.readLine(); while(record!=null) { out.println("<br>"+record.length()); record=br.readLine(); } br.close(); fr.close(); } %> </body> </html> test.txt (0.41k) |
7.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: renaldo Posted on: 2004-08-31 10:12 文件每行的长度应该都为137。 我用PowerBuilder作的程序没有问题。 |
8.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: renaldo Posted on: 2004-08-31 10:19 我翻了一些书,好像没有提及在这方面的内容。 不管怎样,谢谢斑竹。 |
9.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: renaldo Posted on: 2004-08-31 10:30 问题找到了! 文本中每行只要出现中文,就会发生上述问题(其实readLine并没有忽略空格,只是长度计算有问题)。 英文则正常。 请问斑竹有办法解决吗? |
10.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: renaldo Posted on: 2004-08-31 11:07 我再仔细查了一下,BufferedReader读到的中文字符长度算1(而不是2),所以会使原来的长度改变了。 |
11.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: maxyma Posted on: 2004-08-31 12:21 renaldo wrote: 在HTML里,连续的多个空格将呈现为一个空格,但在源文件里还是多个空格,你可以查看源文件。 |
12.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: xiaopa Posted on: 2004-08-31 16:25 不知道你读取的文件是用的什么编码,GB2312?GBK?UNICODE?UTF-8? 不管是什么,想办法转换成GB编码的字符串,然后getBytes就好了 |
13.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: renaldo Posted on: 2004-09-01 14:38 To maxyma: record.length()和浏览器解析html空格不是一回事。 To xiaopa: 我都加了getBytes,还是没用。 我不清楚使用什么编码的,就是一般windows中的txt文件。 |
14.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: nsd Posted on: 2004-09-02 10:24 如果你想让中文的字符占两个char的话,just use .getBytes("iso-8859-1"),指定编码为英文字符集,嘿嘿。因为字符串的长度计算是按照对应的char数组的长度来算的。 你说的长度保持一致是和哪里来比较的,你只要保证两个地方的计算长度方式是一致的就行了。 |
15.Re:请教BufferedReader问题 [Re: renaldo] | Copy to clipboard |
Posted by: yung Posted on: 2004-09-02 11:02 计算长度的话, like this: int slen = s.getBytes().length; |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |