?
File和RandomAccessFile归纳总结
?
一、File类
? ? ? ?1)File类用途:用于描述文件系统中的一个文件或目录。
? ? ? ?2)具体用法:
? ? ? ? ? ?1>创建File类
? ? ? ? ? ? ? ??File file = new File("."+File.separator+"test.txt");
? ? ? ? ? ? ? ? 注意:在路径中使用目录的层级分隔符在不同系统中有区别
? ? ? ? ? ? ? ? ? ? ? ? ?* windows默认为"\" ?: ?d:\XXX\XXX\test.txt
? ? ? ? ? ? ? ? ? ? ? ? ?* linux ? ? ? ?"/" ?: ?d:/XXX/test.txt
? ? ? ? ? ? ? ? ? ? ? ? ?* 所以当需要使用目录层级分隔符时应当使用File提供的常量
? ? ? ? ? ? ? ? ? ?File.separator
? ? ? ? ? ?2>?File类的属性和方法
? ? ? ? ? ? ? ? a.查看该文件大小
? ? ? ? ? ? ? ? ? ? long length = file.length();??
? ? ? ? ? ? ? ? b.获取当前File所描述的文件或目录的名字
? ? ? ? ? ? ? ? ? ??file.getName();
? ? ? ? ? ? ? ? c.获取当前文件或目录的最后修改日期
? ? ? ? ? ? ? ? ? ??file.lastModified();
? ? ? ? ? ? ? ??d.判断当前File对象所描述的文件或目录是否存在
? ? ? ? ? ? ? ? ? ??file.exists();
? ? ? ? ? ? ? ??e.查看当前文件或目录是否可读
? ? ? ? ? ? ? ? ? ??file.canRead();
? ? ? ? ? ? ? ??f.查看当前文件是否可写
? ? ? ? ? ? ? ? ? ??file.canWrite();
? ? ? ? ? ? ? ??g.查看当前File对象描述的是否是一个文件
? ? ? ? ? ? ? ? ? ??file.isFile();
? ? ? ? ? ? ? ??h.查看当前File对象描述的是否是一个目录
? ? ? ? ? ? ? ? ? ??file.isDirectory();
? ? ? ? ? ? ? ??i.获取该File对象所描述文件或目录的路径
? ? ? ? ? ? ? ? ? ??file.getPath();
? ? ? ? ? ? ? ??j.获取绝对路径
? ? ? ? ? ? ? ? ? ??file.getAbsolutePath();
? ? ? ? ? ? ? ??k.获取操作系统标准的绝对路径(该方法需要强制捕获异常)
? ? ? ? ? ? ? ? ? ??file.getCanonicalPath();
? ? ? ? ? ? ? ??l.创建一个目录
? ? ? ? ? ? ? ? ? ??dir.mkdir();
? ? ? ? ? ? ? ??m.创建一个新文件
? ? ? ? ? ? ? ? ? ??file.createNewFile();
? ? ? ? ? ? ? ??n.获取当前File对象的父目录
? ? ? ? ? ? ? ? ? ??file.getParentFile();
? ? ? ? ? ? ? ??o.当删除了该文件或目录
? ? ? ? ? ? ? ? ? ??file.delete();
? ? ? ? ? ? ? ? ? ? 注意:若要删除一个目录,必须保证该目录是空目录(不包含任何子项)才可以删除
?
二、RandomAccessFile类
? ? ? ?1)用途:使用RandomAccessFile向文件中读写数据。
? ? ? ?2)具体用法:
? ? ? ? ? ?1>创建RandomAccessFile类
? ? ? ? ? ? ??RandomAccessFile raf =?RandomAccessFile(File file,String mode);
? ? ? ? ? ? ? 其中:?file ?用于来进行读写操作的文件
? ? ? ? ? ? ? ? ? ? ? ?mode ?对应:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? * ? ? "r" : 对该文件的操作是只读的
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? * ? ??"rw": 队该文件的操作是可读写的
? ? ? ? ? ?2>?RandomAccessFile中常用方法: ? ??
? ? ? ? ? ? ? ??a.向文件中写入一个字节
? ? ? ? ? ? ? ? ? ??raf.write();
? ? ? ? ? ? ? ??b.写一个long值?
? ? ? ? ? ? ? ? ? ??raf.writeLong();
? ? ? ? ? ? ? ??c.写一个字符串按照UTF-8编码将字符串转换为字节后写出
? ? ? ? ? ? ? ? ? ??raf.writeUTF();
? ? ? ? ? ? ? ? ? ? 注意:writeUTF方法写出的字节量比实际多2个字节这两个字节用于记录其写出的字符串占用的 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 总字节量以便读取
? ? ? ? ? ? ? ??d.将字符串按照当前系统默认的字符集转换为对应的字节后写出
? ? ? ? ? ? ? ? ? ??byte[] data = str.getBytes("utf-8");
? ? ? ? ? ? ? ? ? ??raf.write(data);
? ? ? ? ? ? ? ??e.读取一个字节
? ? ? ? ? ? ? ? ? ??raf.read()
? ? ? ? ? ? ? ??f.连续读取4个字节,将对应的int值返回
? ? ? ? ? ? ? ? ? ??readInt();
? ? ? ? ? ? ? ??g.连续读取8个字节,将对应的long值返回
? ? ? ? ? ? ? ? ? ??raf.readLong();
? ? ? ? ? ? ? ??h.使用UTF-8编码的形式读取字符串
? ? ? ? ? ? ? ? ? ??raf.readUTF();
? ? ? ? ? ? ? ??i.获取当前游标的位置
? ? ? ? ? ? ? ? ? ??raf.getFilePointer();
? ? ? ? ? ? ? ??j.滑动游标到指定的位置
? ? ? ? ? ? ? ? ? ??void seek(long pos);
? ? ? ? ? ? ? ? ? ? 注意:0代表第一个字节的位置