对象不可以直接写到数据流中
如果需要将对象写到数据流中,就必须要将对象序列化
序列化就是将对象转换成一个可以写到流中的过程
如何序列化?
实现序列化接口Serializable
反序列化
将对象数据从数据流中的有序数据变成对象的过程
字符输入流
Reader
InputStreamReader 字节到字符的转换输入流
String path="D:\\aa\\aa.log"; //创建文件字节输入流 FileInputStream fis = new FileInputStream(path); //将字节流转换成字符流 InputStreamReader reader = new InputStreamReader(fis); //读取一个字符 int t = reader.read(); while(t!=-1){ char c =(char)t; System.out.print(c); t = reader.read(); } reader.close(); fis.close();
FileReader 文件字符输入流
String path="D:\\aa\\aa.log"; //创建文件字符输入流 FileReader reader = new FileReader(path); int t = reader.read(); while (t!=-1){ char c = (char)t; System.out.print(c); t = reader.read(); } reader.close();
BufferedReader 缓冲字符输入流
String path="D:\\aa\\aa.log"; //创建文件字符输入流 FileReader reader = new FileReader(path); //包装成缓冲字符流 BufferedReader br = new BufferedReader(reader); //读取一行数据 String str = br.readLine(); while(str!=null){ System.out.println(str); str =br.readLine(); } br.close(); reader.close();
字符输出流
Writer
OutputStreamWriter 字节到字符的转换输出流
FileWriter 文件字符输出流
BufferedWriter 缓冲字符输出流
public static void main(String[] args) throws Exception{ int sum=0; int zhushi=0; int code=0; int kong=0; String path = "D:\\11\\a.txt"; FileReader fr = new FileReader(path); BufferedReader br = new BufferedReader(fr); String str = br.readLine(); while(str!=null){ sum++;//总行数 str=str.trim(); if(str.startsWith("/")||str.startsWith("*")){ zhushi++; }else if(str.length()==0){ kong++; }else{ code++; } str = br.readLine(); } System.out.println("总行数:"+sum); System.out.println("注释数:"+zhushi); System.out.println("代码数:"+code); System.out.println("空行数:"+kong); }
原文:https://www.cnblogs.com/zxxb/p/13374845.html