高级编程
文章目录
第六章,输入和输出处理(一)
一,Java I/O(input/output)
文件 | 内存 | 键盘 —> 程序 的过程叫做 读
程序 —> 文件 | 内存 | 控制台的过程叫做 写
1.1,文件(File类)
-
相关记录或放在一起的数据的集合叫做文件
-
通过Java.io.File类访问文件属性
/* *创建文件对象语法 *参数内(path name(路径名称))为文件的目录 *如"c:\\test.txt"或"c:/test.txt" *"\"为转义符所以需再转义 */ File file = new File(String pathname);
-
File类常用的方法
注意:相对路径:当前位置继续向下的路径
绝对路径:从根目录(如:C:\)向下的路径
1汉字字符=2字节
1英文字符=1字节
二,流
-
通过流来读写文件
- 流是一组有序的数据序列
- 以先进先出的方式发出信息通道
- 文件|内存|键盘->程序的过程叫做读
- 程序 —> 文件 | 内存 | 控制台的过程叫做写
- 关闭流时按照后创建的先关闭的顺序关闭
-
流的分类
-
按流向区分
-
输出流:OutputStream和Writer作为父类
-
输入流:InputStream和Reader作为父类
-
输入输出流是相对于计算机来讲的
-
-
按照处理数据单元划分
- 字节流
- 字节输入流InputStream作为父类
- 字节输出流OutputStream作为父类
- 字符流
- 字符输入流Reader作为父类
- 字符输出流Writer作为父类
- 字节流是八位通用字节流,字符流是十六weiUnicode字符流
- 字节流
-
2.1,字节输入流
通过父类类型指向子类对象创建
-
InputStream类常用方法
-
int read():从输入流一个字节一个字节的读,返回该字节的整数表示形式,如果到了末位,返回-1
-
int read(byte[] b):从输入流读取若干个字节,把这些字节保存到数组b中,返回的是读取到的字节数,如果到了末位,返回-1
-
int read(byte[] b,int off,int len):从输入流读取若干个字节,把这些字节保存到数组b中,off指的是字节数组中开始保存数据的起始下标,len指的是想读取的字节数,返回的是读取到的字节数,如果到了末位,返回-1
-
void close():关闭流
-
int available():可以从输入流中读取的字节数目
-
-
子类FileInputStream常用的构造方法
-
FileInputStream(File file):参数为文件类对象
-
FileInputStream(String name):参数为路径
//创建父类类型 InputStream is = null; try { //创建输入流对象:父类类型指向子类对象 is = new FileInputStream("C:\\Users\\Administrator\\Desktop\\first.txt"); //创建byte数组,空间为文件中未读取的字节数 byte[] b = new byte[is.available()]; //读取文件,每一个字节保存在byte数组中 is.read(b); //遍历byte数组并打印其中内容,需转换为char输出 for(byte a : b){ System.out.print((char)a); } }catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }finally{ try{ //关闭流,无论程序是否发生异常都会运行 is.close(); }catch (IOException e) { e.printStackTrace(); } }
-
2.2,字节输出流
-
OutputStream类常用方法
-
void write(int c):写一个字节
-
void write(byte[] buf):写一个字节数组
-
void write(byte[] b,int off,int len):写一个字节数组,从哪里开始写,写多长
-
void close():关闭流
-
void flush():强制把缓冲区的数据写到输出流中
-
-
子类FileOutputStream常用的构造方法
-
FileOutputStream(File file):参数为文件类对象
-
FileOutputStream(String name):参数为路径
-
FileOutputStream(String name,boolean append):第一个参数为路径,第二个参数判断是否在源文件的内容上追加内容,true追加,false不追加,默认不追加
//创建父类类型 OutputStream os = null; try { //创建输出流对象:父类类型指向子类对象 os = new FileOutputStream("C:/Users/Administrator/Desktop/first.txt"); //要写入的字符串:Hello World String str = "Hello World!"; //将字符串转化为byte字节数组 byte[] tybes = str.getBytes(); //将tybes数组写入路径中的文件 os.write(tybes); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { //清空缓冲区 os.flush(); //关闭流 os.close(); } catch (IOException e) { e.printStackTrace(); } }
-