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

Java 输入流读取文本文件换行符有关问题

2013-10-08 
Java 输入流读取文本文件换行符问题一问题在学习流编程的过程中,我遇到了一下问题。首先来看一下我写的java

Java 输入流读取文本文件换行符问题
一问题

在学习流编程的过程中,我遇到了一下问题。首先来看一下我写的java源程序:

package StreamLearn;import java.io.*;public class TestFileInputStream {public static void main(String[] args) {int count=0;FileInputStream in=null;try{in =new FileInputStream("c:\\a.java");}catch(FileNotFoundException e){System.out.println("can not find it");System.exit(1);}    long num=0;try{while((count=in.read())!=-1){System.out.print((char)count);//System.out.println(count);num++;}   }catch(IOException e)   {   e.printStackTrace();   }   System.out.println("\n字符个数:"+num);  }      }

  该代码功能十分简单,从a.java文件中读取字符,并统计个数。让我们来看一下a.java文件中的具体内容:


 Java 输入流读取文本文件换行符有关问题

程序的运行结果如下:

 

123

456

 

字符个数:10

问题出现,本来只有6个字符为什么会变为8个字符呢?让我们对源代码进行改进:

 

package StreamLearn;import java.io.*;public class TestFileInputStream {public static void main(String[] args) {int count=0;FileInputStream in=null;try{in =new FileInputStream("c:\\a.java");}catch(FileNotFoundException e){System.out.println("can not find it");System.exit(1);}    long num=0;try{while((count=in.read())!=-1){//System.out.print((char)count);System.out.println(count);num++;}   }catch(IOException e)   {   e.printStackTrace();   }   System.out.println("\n字符个数:"+num);  }      }

运行结果如下:

49
50
51
13
10
52
53
54
字符个数:8

查询ASCII表,得知1对应ASCII值为49,一直到6为54。多出来的字符对应的ASCII值为13和10,其中13对应为归位符,10为换行符。有关归位与换行的区别请参考我的博客:

http://blog.csdn.net/leixingbang1989/article/details/12056193,在此不多介绍。

总结:

在文件中,换行需要占两个字节,分别对应‘/r’‘/n’,在对文件字符进行统计与编码时,应特别注重该问题。

 

热点排行