【2011/3/2】(1)关于readLine()方法,readLine方法是BufferedReader类的方法,此方法是对字符进行操作的类,如果到达流末尾,则返回null,
2011-03-03 10:30
459 查看
(1)关于readLine()方法,readLine方法是BufferedReader类的方法,此方法是对字符进行操作的类,如果到达流末尾,则返回null,
此方法在无法直接使用字符编码的流中无法使用,在网络传输的过程中Http协议传输的字节流可能是任何形式的数据,可能是某种
编码的字符文本或者是二进制的其它文件如图片、视频、音频等。
不能使用BufferedReader类的原因:
1.BufferedReader类的readLine方法在无法直接使用字符编码的流中无法使用,在网络传输的过程中Http协议传输的字节流可能是任何形式的数据,可能是某种
编码的字符文本或者是二进制的其它文件如图片、视频、音频等。
2.BufferedReader类的readLine方法在读取一行数据的时候不是一碰见就返回一行的,而是读取一个数据段回来,对该数据段进行分析其中的/r/n字符,然后返
回一行的,这就导致我们在读取到一个空行的时候该流的下一个读取点并不就在这个空行的位置,而是包含了空行下面的消息实体的部分信息的,无法精确的定
位空行分隔点。
换行 ('/n')、回车 ('/r')
遇到的问题需求如下:从一个连续不断的字节流中读取判断一个空行,然后提取空行前后的数据。
解决此问题:
1.需要一个可以读取一行的字节操作InputStream包装类
核心算法,此算法版权归属刘亚超
//此算法是首读取两个字节的数字分别存储,判断如果首次读取的x就是-1直接返回null,
// 然后每次向后挪动一个字节的位置,进行比较/r和/n,并存储x的值,如果y值为0则break跳出循环返回最后一个串
public String readLine() throws IOException{
int x = ips.read();
if(x==-1)
return null;
int y = ips.read();
while(!(x=='/r' & y=='/n')){
baos.write(x);
x = y;
y = ips.read();
if(y==-1)
break;
}
String result = new String(baos.toByteArray());
// System.out.println(baos.toByteArray().length);
baos.reset();
// System.out.println(result);
return result;
}
2.使用该类来读取行设计条件当读到一个行的信息为一个空的字符串的时候即找到了该分割点,问题得以解决。
String line = iis.readLine();
while(line!=null && !line.equals("")){
System.out.println(line);
line = iis.readLine();
}
此方法在无法直接使用字符编码的流中无法使用,在网络传输的过程中Http协议传输的字节流可能是任何形式的数据,可能是某种
编码的字符文本或者是二进制的其它文件如图片、视频、音频等。
不能使用BufferedReader类的原因:
1.BufferedReader类的readLine方法在无法直接使用字符编码的流中无法使用,在网络传输的过程中Http协议传输的字节流可能是任何形式的数据,可能是某种
编码的字符文本或者是二进制的其它文件如图片、视频、音频等。
2.BufferedReader类的readLine方法在读取一行数据的时候不是一碰见就返回一行的,而是读取一个数据段回来,对该数据段进行分析其中的/r/n字符,然后返
回一行的,这就导致我们在读取到一个空行的时候该流的下一个读取点并不就在这个空行的位置,而是包含了空行下面的消息实体的部分信息的,无法精确的定
位空行分隔点。
换行 ('/n')、回车 ('/r')
遇到的问题需求如下:从一个连续不断的字节流中读取判断一个空行,然后提取空行前后的数据。
解决此问题:
1.需要一个可以读取一行的字节操作InputStream包装类
核心算法,此算法版权归属刘亚超
//此算法是首读取两个字节的数字分别存储,判断如果首次读取的x就是-1直接返回null,
// 然后每次向后挪动一个字节的位置,进行比较/r和/n,并存储x的值,如果y值为0则break跳出循环返回最后一个串
public String readLine() throws IOException{
int x = ips.read();
if(x==-1)
return null;
int y = ips.read();
while(!(x=='/r' & y=='/n')){
baos.write(x);
x = y;
y = ips.read();
if(y==-1)
break;
}
String result = new String(baos.toByteArray());
// System.out.println(baos.toByteArray().length);
baos.reset();
// System.out.println(result);
return result;
}
2.使用该类来读取行设计条件当读到一个行的信息为一个空的字符串的时候即找到了该分割点,问题得以解决。
String line = iis.readLine();
while(line!=null && !line.equals("")){
System.out.println(line);
line = iis.readLine();
}
相关文章推荐
- 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法
- 关于GestureDetector的onFling方法e1返回null问题
- 使用mybatis操作数据库sum方法返回null解决方法
- 关于firefox安全限制限制您进行剪贴板操作的解决方法
- 关于Jpa使用Update方法进行更新操作,却没有同步到数据库的原因
- json_encode不对中文进行转码、json_decode解析json字符串返回NULL的处理方法
- 关于对发送HTTP请求以及解析服务器返回的数据操作的提取到一个公共类中进行封装
- 使用mybatis操作mysql数据库SUM方法返回NULL解决
- c#操作Excel 一些问题 字符变为null解决方法
- 关于C#操作PPT时遇到的“对COM组件的调用返回了错误HRESULT E_FAIL”错误的解决方法
- 关于MySQL增、删、改列,以及修改表名的几种方法,同时和Oracle的操作进行比较
- objective-c中对象所有权的内存管理(关于set,get方法),以及如何使用@property来进行简易操作(九)
- 关于C#操作PPT时遇到的“对COM组件的调用返回了错误HRESULT E_FAIL”错误的解决方法
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- 【c语言】模拟实现strchr函数,功能:在一个字符串中查找一个字符第一次出现的位置,如果没有出现返回NULL
- 使用mybatis操作mysql数据库SUM方法返回NULL解决
- 如果是除去末尾特定字符或字符串:TrimEnd方法性能优于Remove方法
- java中Collections是由在 collection 上进行操作或返回 collection 的静态方法组成。
- 关于C#操作PPT时遇到的“对COM组件的调用返回了错误HRESULT E_FAIL”错误的解决方法
- 关于CxGrid控件中对选择项进行操作的方法