09,01
课堂笔记:
12.4文件操作
1、对于目录,Java把它当做一种特殊的文件,包括名称、所在路径、读写性、长度等,进而可以进行创建目录、创建临时文件、改变文件名、删除文件、列出一个目录中所有的文件或某个模式相匹配的文件等操作。
构造方法:
public File(String path);可以是绝对路径,也可以是相对路径。
public File(String path,String name);文件名
磁盘上文件所在的父目录
public File(File Parent,String chile);文件名
eg:
File f1=new File(“demo.txt”);
File f2=new File(“c:\\aa\\demo.txt”);
File f3=new File(“c:\\aa”,”demo.txt”);
File f4=new File(“c:\\aa”);
File f5=new File(f4,“demo.txt”);
2、separator:平台相关的目录分隔符。
public static final char separatorChar;
public static String char separator;
3、常用方法:
(1)public String getName(); 返回文件对象名,不包含路径名。
(2)public String getPath(); 返回相对路径名,包含文件名。
(3)public String getAbsolutePath(); 返回绝对路径名,包含文件名。
(4)public String getParent(); 返回父文件对象的路径名。
(5)public File getParentFile(); 返回父文件对象。
4、获得文件属性:
(1)public long length(); 返回指定文件的字节长度。
(2)public Boolean exists(); 测试指定的文件是否存在。
(3)public long lastModified(); 返回指定文件最后被修改的时间。
5、文件操作:
(1)public Boolean renameTo(Filedest); 文件重命名。
(2)public Boolean delete(); 删除空目录。
6、目录操作
(1)public Boolean mkdir(); 创建指定目录,正常建立时返回true。
(2)public String[] list(); 返回目录中的所有文件名字符串。
(3)public File[] listFiles(); 返回指定目录中的所有文件对象。
isFile(); 判断是文件吗(文件不存在时返回false)
isDirectory(); 判断是目录吗
exists(); 判断是否存在
mkdir(); 创建目录结构
mkdirs(); 创建多级目录
delete(); 删除文件
list(); 返回是一个字符数组。显示文件夹下的所有文件
insert(); 插入
7、递归:
分析:方法listDir()可以显示当前文件夹下的文件,如果有子文件夹,则需使用递归调用。
注意:
(1)一定要限定条件,否则内存溢出。
(2)使用递归时,调用次数不要过多,否则也会出现内存溢出。
例子:
public void listDir(File dir,int level){
System.out.println(getLevel(level)+dir.getName());
level++;
File[] files = dir.listFiles();
for(int x =0; x<files.length; x++){
if(files[x].isDirectory())//如果遍历到的是目录。
listDir(files[x],level);//递归。
else
System.out.println(getLevel(level)+files[x].getName());
}
}
8、随机文件操作:
RandomAccessFile类可以对文件进行随机读写操作。
特点:
(1) 对一个文件可以同时进行既读又写的操作。
(2) 可以在文件中指定的任意读取数据或写入数据。
随机文件操作就是对文件的访问。
构造方法—该对象只能对文件进行操作
RandomAccessFile(File file,String mode) ;
RandomAccessFile(String name,String mode);
读写数据的常用方法:
(1)读、写基本数据类型: readInt()、writeInt(int n)等;
(2)读、写UTF字符串: readUTF()、writeUTF(String str);
(3)读取文件中的一行: readLine();
9、文件随机读写流的读取指针控制:
(1)long getFilePointer() ---得到当前的文件读取指针。
(2)void seek(long pos) ---把指针从开始移动到pos位置。
(3)long length() ---得到文件的长度(有多少个字节) 。
(4)void setLength(long newLength)
10、r:只读;rw:可读可写
11、补充———文件过滤器
(1)FileFilter接口:路径用于抽象名的过滤器。此接口的实例可传递给 File 类的 listFiles(FileFilter) 方法。
(2)成员方法: boolean accept(File pathname)
(3)测试指定抽象路径名是否应该包含在某个路径名列表中。
(4)FilenameFilter接口:实现此接口的类实例可用于过滤器文件名。Abstract Window Toolkit 的文件对话框组件使用这些实例过滤 File 类的 list 方法中的目录清单。
(5)成员方法:boolean accept(File dir,String name)
测试指定文件是否应该包含在某一文件列表中。
今天的感受:
哎、、、今天真的很想叹气。今天是感觉最累的一天,上午听课的时候感觉有点困啊,但还是坚持下来了,听得有点迷糊啊,当时是懂了点,但是中午回宿舍睡了一觉,下午坐在班里写老师留的作业,墨迹了一下午,就是写不对,很郁闷啊。直到晚上,老师问我写完了吗,我说没呢,感觉好丢脸昂。感觉自己真的和别人差的很多,有的东西其实还是挺不理解的。今天我深刻认识到了,还得好好学啊。不学是真不会啊!今天通过别人给我讲解,还是按时完成了作业。感觉今天欠缺的还是以前学的知识,比如随机的那个作业,就不是很会。哎、、、我只能说,认真淆习吧!!