现在我们需要将代码中的数据保存到记事本文件中,经过分析需要找到一个输出流来把数据写入到文件中,所以找到了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 会自动创建一个文件(如果文件不存在,并且文件的路径存在的)
- 写单个数据字节
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(); |
总结
- 确定输出到哪里去
- 创建输 出流的对象(调用输入write方法)
- 调用write方法写数据
- 关闭流资源
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数组
- 字符编码
什么是字符编码
例如有一个字 : 好 ----> 存储到磁盘
常见的字符编码
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程序 数据库 多个地方都会涉及到字符编码-> 一定要一致