字节输出流

现在我们需要将代码中的数据保存到记事本文件中,经过分析需要找到一个输出流来把数据写入到文件中,所以找到了OutputStream(字节输出流),但是此类是抽象类,而且写文件的方法(write)是实例方法,所以我们向下找子类来创建对象并调用方法,OutputStream有很多的子类,其中最常用的算是文件流FileOutputStream了,主要用来操作文件的。

如何把数据写入文件中:

构造方法:

       FileOutputStream(File file)

       FileOutputStream(String name)

       FileOutputStream(File file, boolean append)

       FileOutputStream(String name, boolean append)

方法:

      void write(int b)               调用一次写入一个数据字节

       void write(byte[] b)              调用一次,可以把一个byte数组中的数据写入

      void write(byte[] b, int off, int len)      调用一次,把b数组中的一部分数据写入

注意: FileOutputStream 会自动创建一个文件(如果文件不存在,并且文件的路径存在的)

  1. 写单个数据字节

OutputStream os = new FileOutputStream("D:/123.avi");

       os.write(65);

os.close();

2. 写一个字符串

OutputStream os = new FileOutputStream("D:/123.txt",true);

os.write("66666".getBytes());

os.close();

总结

  1. 确定输出到哪里去
  2. 创建输 出流的对象(调用输入write方法)
  3. 调用write方法写数据
  4. 关闭流资源

2.读写乱码问题-字符编码

  1. 乱码怎么产生的
      1. 编码和解码规则不一致
      2. 本身这个字符编码不支持某种语言(中文)
  2. 代码提现-尽可能避免乱码的产生

编码  : String  --->  byte[]    String中有对应的方法:

byte[] getBytes() 使用平台的默认字符集将此 String 编  byte[] getBytes(Charset charset) 使用指定的字符编码来编码字符串

byte[] getBytes(String charsetName) 使用指定的字符编码来编码字符串

解码  : byte[]  --->  String    String中有对应的构造方法:

String(byte[] bytes) 通过使用平台的默认字符集解码指定的 byte 数组

String(byte[] bytes, Charset charset) 使用指定的字符集来解码指定的byte数组

String(byte[] bytes, String charsetName) 使用指定的字符集来解码指定的byte数组

  1. 字符编码

什么是字符编码

       例如有一个字  :  好  ----> 存储到磁盘

常见的字符编码

ASCII编码:用来表示英文,它使用1个字节表示,其中第一位规定为0,其他7位存储数据,一共可以表示128个字符。

拓展ASCII编码:用于表示更多的欧洲文字,用8个位存储数据,一共可以表示256个字符

GBK/GB2312/GB18030:简称国标,表示汉字。GB2312表示简体中文,GBK/GB18030表示繁体中文,其实就是几个不同的版本而已。

Unicode编码:包含世界上所有的字符,是一个字符集。

UTF-8是Unicode字符的实现方式之一,它使用1-4个字符表示一个符号,根据不同的符号而变化字节长度

ISO-8859-1:是单字节编码,向下兼容ASCII,不支持中文

友情提醒

实际web开发  前台网页  后台Java程序  数据库   多个地方都会涉及到字符编码-> 一定要一致

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值