Java-字节流(输入输出流InPutStream、OutputStream)

使用字节流会出现的问题:

遇到中文字符是,可能不会显示完整的字符。

解决这个问题就用到的是字符流,字符流专门处理文本文件。

GBK和UTF-8:

GBK:主要用于中文编码,长度占2个字节

UTF-8:包含全世界用到的字符,会占用更多的数据库存储空间,长度占3个字节

一、字节输出流-OutputStream

抽象类,字节输出流所有的超类

基本共性功能方法:

子类:File Out out stream(文件字节输出流)

作用:把内存中的数据写入到硬盘文件中

构造方法:

FileOutputstream(String name)创建一个向具有指定名称的文件中写入数据的输出文件流。

FileOutputstream(File file)创建一个指定File对象表示的文件中写入如数据的文件输出流。

 

写入数据的原理

(内存->硬盘):java程序-JVM(虚拟机)-OS(操作系统)-OS调用写数据的方法-把数据写到文件中

练习:一次写一个字节,流的使用步骤

步骤一:

创建一个FileOutputStream对象

FileOutputStream fos = new File OutputStream(name:“写入的目的地”);

步骤二:

调用共性功能方法write,把数据写到文件中

fos.write(b:49);//49表示1,一次就放进一个1

步骤三:

写入后要释放资源(流使用会占用一定的内存,使用完毕清空,提供程序效率)使用close

fos.close();

练习:一次写入多个字节

步骤一:

创建一个对象

FileOutputStream fos = new File OutputStream(name:“相对/绝对路径\\文件名”);

步骤二:

写一个数组,再把数组传进去

Byte[] bytes = {65,66,67,68};//查询ASCII码,得ABCD

fos.write(bytes);

步骤三:

释放

fos.close();

续写和换行:

续写

 使用两个参数的构造方法:

FileOutputStream(String name,boolean append)//name是写入的目的地;

    append追加写开关,有true和false。

          true不会覆盖源文件,继续在文件末尾追加写数据;

          false创建新文件,覆盖;

换行

Windows:\r\n

Linux:\n

Mac:\r

例子:

 

二、字节输入流-InputStream

 

子类:FileInputstream(文件字节输入流)

作用:把硬盘文件的数据,读取到内存中使用

构造方法:

FileInputstream(String name);Srting name 文件路径

FileInputstream(File file);文件

构造方法的作用:

创建FileInputstream对象,把对象指定方法读取文件

读取数据的原理:

(硬盘->内存):java程序-JVM-OS-OS读取数据的方法-读取文件

 

练习:一次读取一个

步骤一:

创建一个对象

FileInputStream fis = new FileInputStream(name:“要读取的路径”);

步骤二:

把FileInputStream对象指定构造方法中要读取的文件

Int len = fis.read();//读取要有返回值

System.out.println(len);//输出

步骤三:

关闭释放资源

fis.close();

练习:一次读取多个

步骤一:

创建一个对象

步骤二:

把FileInputStream对象指定构造方法中要读取的文件

Byte[] bytes = new byte[2];//定义一个数组,长度为两位

Int len = fis.read(bytes);

System.out.prinln(Arrays.toString(bytes));

步骤三:

关闭释放资源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章