------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------
File类
用来将文件或者文件夹封装成对象,方便对文件和文件夹进行操作
File对象可以作为参数传递给流的构造函数
File类的基本方法:
1.创建. boolean createNewFile()
在指定位置创建文件,如果该文件已存在,则不创建,返回false和输出流不一样
boolean mkdir():创建文件夹
2.删除:
boolean delete();//删除失败返回false,如果文件正在被使用,则无法删除
void deleteOnExit();在程序退出时删除指定文件
3.判断:
isHidden();是否为隐藏文件
isAbsolutePath()
isDirectory();判断是否为文件夹
isFile();判断是否是文件
记住:在判断文件对象是否为文件或者文件夹是,必须先判断文件是否存在: exists();
4.获取信息
getName()
getPath()
getParent()
getAbsolutePath()
boolean renameTo(File dest)://重新命名此抽象路径名表示的文件
File f1 = new File("1.txt");
File f2 = new File("2.txt");
f1.renameTo(f2),//将f1的文件名改为f2的文件名
返回指定文件名的文件
练习:返回指定目录下的所有文件
Properties是hashtable的子类
也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串
是集合中和IO技术相结合的集合容器
该对象的特点:可以用于键值对形式的配置文件
Properties集合的基本功能:
设置和获取元素:
setProperty()//设置元素
getProperty()//获取元素
StringPropertyNames()//获取集合中所有的names,返回一个Set集合
在加载数据时,需要数据有固定的格式:键=值;
将指定文件的数据存储到Properties集合中并打印:
练习:记录程序运行次数,如果次数已到,则给出注册提示:
IO包中的其他类:
打印流: printWriter与printStream 可以直接操作输入流和文件
该流提供了打印方法,可以将各种数据类型的数据都原样打印
字节打印流:printStream
构造函数可以接受的数据类型: file对象(File) 字符串路径(String) 字节输出流. OutputStream
字符打印流:printWiter
构造函数可以接受的数据类型: file对象(File) 字符串路径(String) 字节输出流. OutputStream 字符输出流 Writer 识别标记(true)自动换行刷新
序列流: SequenceInputStream 对多个流进行合并,
操作对象: ObjectInputStream和 ObjectOutputStream: 被操作的对象需要实现Serializable(标记接口)
读写数据方法:oos.writeObject(对象) Person p = (Person)ois.readObject()
RandomAccessFile:随机访问文件,自身具备读写的方法,通过skipBytes(int x),seek(int )来达到随机访问
该类不算是io体系中的子类,而是直接继承子Obkect
但是它是IO包中成员,因为它具备读和写的功能.它内部封装了一个数组,而且通过指针对数组元素进行操作
可以通过getFilePointer获取指针的位置:同时可以通过seek改变指针的位置
通过构造函数可以看出>该类只能操作文件,而且操作文件还有模式:只读 r , 读写 rw 而且该对象的构造函数要操作的文件不存在,则会自动创建
如果存在,则不会覆盖
管道流PipedInputStream 和 PipedOutputStream ::输入输出可以直接连接(in.connect(out)),通过结合线程使用
操作基本数据类型: DataInputStream和DataOutputStream
操作字节数组: ByteArrayInputStream 和 ByteArrayOutputStream
操作字符数组:CharArrayReader 和 CharArrayWrite
操作字符串: StringReader 和StringWriter
字符编码
字符流的出现为了方便操作字符.更重要的是加入了编码转换.通过子类转换流来完成
InputStreamReader 和 OutputStreamWriter
在两个对象进行构造的时候加入字符集
常见的编码表有:ASCII (用一个字节的7位可以表示) ISO88598-1 (用一个字节的8位可以表示) GB2312(中国的编码表) GBK Unicode(国际标准码) utf-8(最多用三个字节来表示一个字符);
编码:字符串变字节数组 String---->byte[] str.getBytes() 默认GBK
解码:字节数组变字符串 byte[] ----->String new String(byte[]) 默认GBK
UTF-8:用一个字节表示是:1000 0000
用两个字节表示是:1100 0000 1000 0000
用三个字节表示为1110 0000 1100 0000 1000 0000