字节流

来源:互联网 发布:ct重建算法 编辑:程序博客网 时间:2024/06/08 08:45
  • 字节流读取中文会出现的问题:

    • 1.一个中文是两个字节,我们读取一半中文 打印出来就是乱码

    • *
  • 字符编码表:

    • 1.ASCII码表:美国人,这个表中只有英文和符号 而且每一个字符都是一个字节 0000 0000
  • 所有字符都是正数 a-97 0110 0001

    • 2.GB2312:中文简体码表 (6000-7000个汉字),汉字占有2个字节,
  • 中: 1010 0010 1000 1111 中:-10-20

    • 3.GBK码表:中文汉字(20000多个),中文两个字节,有些文字:1010 0010 0100 1111
  • 比如:国 -10 20

    • 4.Unicode:(国际统一码表),所有国家的文字都有,不管是中文,英文,日文,所有字符都是2个字节
  • a:97 —>0000 0000 0110 0001

    • 6.UTF-8:码表,基于Unicode做了优化,一个字节就可以存储的数据,不用两个字节存储
  • 一个中文在这个码表中占3个字节

    • 总结:
  • 我们中文使用的码表: GBK(中文2字节) UTF-8(中文3个字节) 英文(就是一个字节)
  • 了解:ISO-8859-1,拉丁码表,拉丁文
  • OutputStreamWriter: 字符输出流,写一个字符,一个字符数组,一个字符串
  • 功能+类型
  • OutputStreamWriter 是字符流通向字节流的桥梁,查表(编码)

    • 构造:

    • public OutputStreamWriter(OutputStream out);//由OutputStreamWriter编码,然后把编码后的数据交给out流
  • public OutputStreamWriter(OutputStream out, String charsetName);//查指定的码表
  • InputStreamReader:字符输入流 读一个字符 读一个字符数组
  • InputStreamReader 是字节流通向字符流的桥梁,查表(解码)
  • 注意:文件是GBK编码,那么我们要用GBK解码
  • 文件是UTF-8编码,那么我们要用UTF-8解码

    • 构造:
  • public InputStreamReader(InputStream in);//由in读取字节数据,交给InputStreamReader去解码
  • public InputStreamReader(InputStream in, String charsetName);//指定码表
    /*
  • 在java中 把读写对象的流称为序列化流和反序列化流;

    • 1.把一个对象 写到文件中,这种流我们称为 序列化流 ObjectOutputStream

    • 2.从文件中把一个对象读取出来,这种流我们称为 反序列化流 ObjectInputStream

    • *
  • ObjectOutputStream类:
  • public ObjectOutputStream(OutputStream out);

    • ObjectInputStream类:
  • public ObjectInputStream(InputStream in);

    • 两个异常:
  • 1.NotSerializableException: 写入到文件的对象所属的类 没有实现 Serializable接口
  • 这个接口作用就是标记

    • 2.InvalidClassException:无效类异常
  • 写入一个对象后,修改该对象所属的类,再读取刚刚写入对象

    • 3.transient:瞬态关键字
  • 修饰成员变量,被transient修饰的成员变量,用法完全和没修饰一样
  • 在对象序列化的时候,会自动忽略transient修饰的成员变量

    • 实际上static也有此功能
  • /*
  • 打印流:
  • PrintWriter PrintStream

    • 他们的方法完全一样,但是打印的目的地不一样

    • PrintWriter:
  • 打印的目的地:可以是File对象,其他的字节输出流对象,字符串类型的文件名
  • 还可以是字符输出流

    • PrintStream:
  • 打印的目的地:可以是File对象,其他的字节输出流对象,字符串类型的文件名

    • *
  • common-io框架:是第三方组织,Apache(阿帕奇)

    • 使用第三方框架的步骤:

    • 1.项目根目录下建立一个文件夹 “lib”

    • 2.把要用的第三方框架的.jar包拷贝

    • 3.把jar包添加到类路径(classpath)
  • 右键要添加的jar包—>build path(构建路径)—>add to build path(添加到构建路径)

    • 4.直接在你的代码中使用

    • 以FileUtils工具类为例:基本上方法都是静态的
  • writeStringToFile(File file,String content):将内容content写入到file中;
  • readFileToString(File file):读取文件内容,并返回一个String;

    • copyFile(File srcFile, File destFile): 文件复制
  • copyDirectoryToDirectory(File srcDir,File destDir);文件夹复制
    • 3.特有方法:
  • put(K k,V v);====>setProperty(String propertyName,String propertyValue);
  • get(K k);====>getProperty(String propertyName);

    • Set keySet();====>Set stringPropertyNames();

    • 4.和持久有关的方法
  • 4.1 写数据到文件(保存数据)
  • store(OutputStream out);//推荐用这个
  • store(Writer write);

    • 4.2从文件中读数据(读数据)
  • load(InputStream in);//推荐用这个
  • load(Reader reader);
原创粉丝点击