IO 使用说明介绍
在判断文件对象是否是文件或者目录时,必须要先判断该文件对象封装的内容是否存在,通过exists判断; 在文本文件操作流构造的时候还可指定编码方式;
file f;
f.exists();
f.isdirectory();
f.isfile();
f.deleteonexit();// 在程序退出的时候将指定文件删除;
f.createnewfile();// 在指定位置创建文件,如果文件已经存在,则返回false;
f.getparent();//此方法返回的是绝对路径中的父目录,如果获取的是相对路径,返回null,如果相对路径中有上一层目录则返回该目录;
file.separator //文件系统分割符,不同系统分割符不同;
filenamefilter://用于过滤文件名;
filenamefilter.accept(file dir,string name); //测试指定文件是否包含在某一文件列表中;
name:文件的名称;
public boolean accept(file dir, string name) { return name.endswith(".txt"); }
//缓冲区的出现是为了提高流的操作效率而出现的;在创建缓冲区之前,必须要有流对象;
//缓冲技术其实是在对象内部封闭了数组,存完了之后一次性写入;
constructor: 将流传入buffer的构造函数;
notice:只要用到缓冲区,就得对缓冲区进行刷新;
buffered... buf;
buf.flush();
buf.close();//关闭缓冲区就是关闭缓冲区中的流对象;
bufferedreader bufr;
bufr.readline();//返回一行,但不包含换行符;
// 无论读取一行还是多个字符,其实最终都是在硬盘上一个一个的读取,所以最终使用的方法还是read方法一次读一个
/*
* bytearrayinputstream:在构造的时候,需要接收数据源,而且数据源为字节数组;
* bytearrayoutputstream:在构造的时候,不用定义数据目的,因为内部定义了一个可变长度的字节数组,它就是数据目的地;
* 两个流对象都操作的是数组,并没有使用系统资源,不需要进行关闭的操作;
*/
// 关闭流资源之前会刷新一次内部缓冲区中的数据;
// flush();刷新(将缓冲区中的数据存入文件中)后,流继续使用;
// 序列化:静态的成员不能序列化;
// 如果不想让非静态成员被序列化,加修饰符:transient int,,,
system.in:inputstream
system.out:outputstream