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 }
人生如水,不争高山,自然愈下,三年又三年。——struggle!