package com.file; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; public class TextReadFile { /* * 一字节为单位读取 */ public static void readFileByBytes(String fileName){ File file = new File(fileName); //创建文件 InputStream in = null; System.out.println("!.以字节为单位读取文件内容:一次读取一个"); try { in = new FileInputStream(file); int tempbyte; while((tempbyte = in.read())!=-1){ System.out.write(tempbyte); } in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return; } System.out.println("2.以字节为单位读取文件内容:一次读取多个字节:"); try { byte[] temptypes = new byte[1024]; int byteread = 0; in = new FileInputStream(fileName); TextReadFile.showAvailableBytes(in); while((byteread = in.read(temptypes))!=-1){ System.out.write(temptypes, 0, byteread); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(in != null){ try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } /* * 显示输入六中还剩的字节数 */ public static void showAvailableBytes(InputStream in){ try { System.out.println("当前字节输入流中的字节数为:"+in.available()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 义字符为单位读取 */ public static void readFileByChar(String fileName){ File file = new File(fileName); Reader read = null; System.out.println("3、以字符为单位读取文件内容,一次读一个字节:"); try { read = new InputStreamReader(new FileInputStream(file)); int tempchar; while((tempchar= read.read())!=-1){ if((char)tempchar!='r'){ System.out.print((char)tempchar); } } read.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("4.一字符为单位读取文件内容,一次读取多个:"); char[] tempchars = new char[1024]; int charread = 0; try { read = new InputStreamReader(new FileInputStream(file)); while((charread=read.read(tempchars))!=-1){ if((charread == tempchars.length)&&(tempchars[tempchars.length-1]!='r')){ System.out.print(tempchars); }else{ for(int i = 0;i<charread;i++){ if(tempchars[i]=='r'){ continue; }else{ System.out.print(tempchars[i]); } } } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(read != null){ try { read.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } /* * 读一行 */ public static void readFileByLine(String fileName){ File file = new File(fileName); BufferedReader reader = null; System.out.println("6.以行为为单位读取文件内容,一次读一行:"); try { reader = new BufferedReader(new FileReader(file)); String tempString = null; int line = 1; while((tempString = reader.readLine())!=null){ System.out.println("line"+line+":"+tempString); line++; } reader.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(reader!= null){ try { reader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } public static void main(String[] args) { String fileName = "D:/Desktop/JarCode.txt"; System.out.println("1.按字节为单位读取文件:"); readFileByBytes(fileName); System.out.println("1.按字符为单位读取文件:"); readFileByChar(fileName); System.out.println("1.按行为单位读取文件:"); readFileByLine(fileName); } }