黑马程序员----Java基础之IO包中其它类

------- <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();在程序退出时删除指定文件

扫描二维码关注公众号,回复: 4189109 查看本文章

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      

猜你喜欢

转载自blog.csdn.net/Crazysort/article/details/46544925
今日推荐