利用转换流按照指定字符编码读取
FileReader fr = new FileReader("D:\\io\\a.txt", Charset.forName("GBK")); //2.读取数据 int ch; while ((ch = fr.read()) != -1){ System.out.print((char)ch); } //3.释放资源 fr.close();
利用转换流按照指定字符编码写出
FileWriter fw = new FileWriter("D:\\io\\c.txt", Charset.forName("GBK")); fw.write("你好你好"); fw.close();
将本地文件中的GBK文件,转成UTF-8
FileReader fr = new FileReader("myio\\b.txt", Charset.forName("GBK")); FileWriter fw = new FileWriter("myio\\e.txt",Charset.forName("UTF-8")); int b; while ((b = fr.read()) != -1){ fw.write(b); } fw.close(); fr.close();
利用字节流读取文件中的数据,每次读一整行,而且不能出现乱码 //1.字节流在读取中文的时候,是会出现乱码的,但是字符流可以搞定 //2.字节流里面是没有读一整行的方法的,只有字符缓冲流才能搞定
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\io\\a.txt"))); String s = br.readLine(); System.out.println(s); br.close(); /* 转换流的名字是什么? 字符转换输入流:InputStreamReader 字符转换输出流:OutPutStreamWriter 转换流的作用是什么? 字节流想要用字符流中的方法 * */
利用序列化流/对象操作输出流,把一个对象写到本地文件中 序列化流作用:将对象序列化 以一种乱码放入文件中 防止读取和修改 若要回归原形式则使用反序列化流
构造方法: public ObjectOutputStream(OutputStream out) 把基本流变成高级流 成员方法: public final void writeObject(Object obj) 把对象序列化(写出)到文件中去
student s = new student("张三",13,"南京"); //加入transient:瞬态关键字后 不会把address序列化到文件当中 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\io\\aaa.txt")); oos.writeObject(s); oos.close();
/* 需求: 利用反序列化流/对象操作输入流,把文件中中的对象读到程序当中 构造方法: public ObjectInputStream(InputStream out) 把基本流变成高级流 成员方法: public Object readObject() 把序列化到本地文件中的对象,读取到程序中来 */
//1.创建反序列化流的对象 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\io\\aaa.txt")); //2.读取数据 student o = (student) ois.readObject(); //3.打印对象 System.out.println(o); //4.释放资源 ois.close();//Student{name = zhangsan, age = 23, address = null}
//总结: //1.使用序列化流将对象写到文件时,需要让javabean类实现serializable接口; //否则会出现notseralizable异常 表示这个对象不可被序列化 //2.序列化流写到本地文件中的数据是不能被修改的,一旦修改就无法再次读回来了 //3.序列化对象后,修改了javabean类,再次反序列化,会不会有问题? //会出问题,会抛出invalidClassException异常 //解决方案:给Javabean类添加serialVersionUID(序列号,版本号) //4.如果一个对象中的某个成员变量的值不想被序列化,又该如何实现呢? //解决方案:给成员变量加transient关键字修饰,该关键字标记的成员变量不参与序列化过程。