java文件读取

  读取可以是以字节为单位读取,可以是以字符为单位,也可以是一整行。

  使用FileInputStream就是按照字节读取的一次读取一个字节,常用于读取二进制文件如图片,声音,影像等。

 1 try {
 2             aFileInputStream=new FileInputStream(aFile);
 3 //            FileInputStream aFileInputStream2=new FileInputStream("E:/a.txt");
 4             int ch;
 5             while((ch=aFileInputStream.read())!=-1)
 6             {
 7                 System.out.print((char)ch);
 8             }
 9         } catch (FileNotFoundException e) {
10             // TODO Auto-generated catch block
11             e.printStackTrace();
12         } catch (IOException e) {
13             // TODO Auto-generated catch block
14             e.printStackTrace();
15         }finally {
16             if(aFileInputStream!=null)
17             {
18                 try {
19                     aFileInputStream.close();
20                 } catch (IOException e) {
21                     // TODO Auto-generated catch block
22                     e.printStackTrace();
23                 }            
24             }
25         }

  建议首先建立一个文件引用,然后通过exists()检查文件是否存在,这样会比注释起来的那句代码,直接让它抛出异常处理要快,用完要注意把文件输入流关闭下面也是如此。

使用FileReader或者InputStreamReader,以字符为单位读取一次读取一个字符的字节,常用于读文本,数字类文件。

 1 try {
 2             FileReader fileReader=new FileReader(aFile);
 3 //            FileReader aFileReader=new FileReader("E:/a.txt");
 4             int a;
 5             while((a=fileReader.read())!=-1)
 6             {
 7                 System.out.print((char)a);
 8             }
 9 
10             fileReader.close();
11         } catch (FileNotFoundException e) {
12             // TODO Auto-generated catch block
13             e.printStackTrace();
14         } catch (IOException e) {
15             // TODO Auto-generated catch block
16             e.printStackTrace();
17         }

  但是需要注意对于windows下,\r\n这两个字符在一起时,表示一个换行。但如果这两个字符分开显示时,会换两次行,因此,要屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。还可以直接读取多个字符

 1 try {
 2             FileReader fileReader=new FileReader(aFile);
 3 
 4             char[] a=new char[20];
 5             while(fileReader.ready())
 6             {
 7                 fileReader.read(a);//返回读取长度
 8             }
 9             System.out.println(String.valueOf(a));
10             fileReader.close();
11         } catch (FileNotFoundException e) {
12             // TODO Auto-generated catch block
13             e.printStackTrace();
14         } catch (IOException e) {
15             // TODO Auto-generated catch block
16             e.printStackTrace();
17         }

这里的关闭输入流最好放在finally里面,可以避免抛异常后没有关闭的情况。

最后BufferedReader可以以行的形式读取,常用于读面向行的格式化文件。

 1 BufferedReader bufferedReader=null;
 2         try {
 3             bufferedReader=new BufferedReader(new FileReader(aFile));
 4             String aString;
 5             while((aString=bufferedReader.readLine())!=null)
 6             {
 7                 System.out.println(aString);    
 8             }
 9             
10         } catch (FileNotFoundException e) {
11             // TODO Auto-generated catch block
12             e.printStackTrace();
13         } catch (IOException e) {
14             // TODO Auto-generated catch block
15             e.printStackTrace();
16         }finally {
17             if (bufferedReader!=null) {
18                 try {
19                     bufferedReader.close();
20                 } catch (IOException e) {
21                     // TODO Auto-generated catch block
22                     e.printStackTrace();
23                 }
24             }
25         }

 

posted @ 2017-08-16 13:00  低谷还能再向下  阅读(368)  评论(2编辑  收藏  举报