IO流
FileInputStream只能读Ascii码文件,文件中有除Ascii码之外的文字都读不了
NotSerializableException不允许序列化异常
序列化和反序列化
对象从内存写入磁盘(网络)的过程称为对象持久化,也称为序列化
从磁盘(网络)中读取文件到内存还原为对象的过程称为反序列化
Io流有几种、流怎么分
- 流按照方向分
- 流按照传输单位分
- Java提供了四个基类
IntPutStream、OutPutStream、Reader、Wirter
- 字节流中常用的有 文件 对象 二进制
- 字符流中常用的有 文件 一次读一行的缓冲流
词频设计
package bao6;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Random;
public class Demo3 {
static String[] arr = {"面向对象", "封装", "继承", "多态"
, "数组", "父类", "抽象类", "接口", "异常", "运行时异常"
, "编译时异常", "抽象方法", "成员方法", "构造方法", "静态方法"
, "成员变量", "局部变量", "静态变量", "常量", "重写", "重载"
, "向上转型", "向下转型"};
static Random random = new Random();
public static void main(String[] args) {
//创建一个词频测试文件
try {
String name = "D:\io\words";
Writer writer = new FileWriter(name);
for (int i = 1; i <= 10000; i++) {
int index = random.nextInt(arr.length); //每循环一次僧成一个随机整数
if (i % 10 == 0) {
writer.write(arr[index] + "n");
} else {
writer.write(arr[index] + " ");
}
}
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package bao6;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Demo4 {
public static void main(String[] args) {
//词频统计
Map map=new HashMap<>();//创建用于词频统计结构的HashMap
MaptreeMap=new TreeMap<>();
String name="D:\io\words";
try {
Reader reader=new FileReader(name);
//用字符流对象reader作为缓冲流BufferReader的参数
//ufferReader是包装流,包装了Reader,底层是Reader
BufferedReader bufReader=new BufferedReader(reader);
String line=null;
while( (line=bufReader.readLine())!=null){
//拆分字符串,String类提供了一个采用方法split(“分隔符”),返回拆分后的子串数组
String[] arr = line.split(" ");
for (String word:arr){//遍历子串数组arr,取出每一个词
if (map.get(word)==null){//用words作为key去HashMap中取value,返回null,说明这个次没有出现过
map.put(word,1);
}else {
map.put(word,map.get(word)+1);
}
}
}
System.out.println("词频统计结果:");
//map.forEach((k,v)->{
// System.out.println(k + ":" + v);
// });
// bufReader.readLine();
//char[]data=new char[50];
int count=0;
Set>entries=map.entrySet();
for (Map.Entryentry:entries){
String key=entry.getKey();
Integer value=entry.getValue();
treeMap.put(value,key);
count +=value;
System.out.println(key+":"+value);
}
System.out.println(count);
System.out.println("排序后:");
treeMap.forEach((k,v)->{
System.out.println(k + ":" + v);
});
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}



