1.1、File类中的常用的方法列举
package create;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
public class InputOut {
public static void main(String[] args) throws IOException {
File set = new File("D:\\kinggsoft");
//打印输出文件名
System.out.println(set.getName());
//获取文件的路径
System.out.println(set.getAbsolutePath());
//在当前文件夹下创建目录
File jf= new File(set,"dome");
//如果目录不存在
if (!jf.exists()) {
jf.mkdir();
}
//在在jf目录中创建test.txt
File test = new File(jf,"test.txt");
if (!test.exists()) {
test.createNewFile();
}
//获取jf目录中的所有文件
File[] files = jf.listFiles();
//获取jf目录中所有文件的名字
System.out.println(Arrays.toString(files));
//显示test文件的绝对路径
System.out.println(test.getCanonicalPath());
}
}
1.1.1、文件过滤器
实现思想
调用FileFilter,用另外的类去重写接口中的方法来进行实现
用listFiles()方法可以接受一个FileFilter的参数
,接口FileFilter中含有一个accept方法会对指定的File文件中的子目录和文件进行迭代判断是否为符合条件的文件,返回true与false
在主方法中遍历输出文件的名称
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.io.FileFilter;
//import javax.swing.filechooser.FileFilter;
public class InputOut {
public static void main(String[] args) throws IOException {
//文件过滤器
File setFile = new File("D:\\kinggsoft");
//用listFiles()方法可以接受一个FileFilter的参数,接口FileFilter中含有一个accept方法
//会对指定的File文件中的子目录和文件进行迭代
File[] files = setFile.listFiles(new MyFilter());
for (File f:files) {
System.out.println(f.getName());
}
}
}
//FileFilter的实现类
class MyFilter implements FileFilter{
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".java") && pathname.isFile();
}
}
1.2 RandomAccessFile类
RandomAccessFile类的主要功能是完成随机读取功能,可以读取指定位置的内容。
File类只是针对文件本身进行操作的,而如果要想对文件内容进行操作,则可以使用RandomAccessFile类,RandomAccessFile属于随机读取类,可以随机读取一个文件中指定位置的数据
第二个参数打开文件的模式,有以下四种:注意没有只写“w”方式
RandomAccessFile(File file, String mode)
创建从中读取和向其中写入(可选)的随机访问文件流,该文件由 File 参数指定。
(1) “r” 以只读方式打开。
(2)"rw"以读写方式打开,如果该文件尚不存在,则尝试创建该文件。
(3) “rws”
(4)“rwd”
2.相关方法
(1) long getFilePointer():返回文件记录指针的当前位置,
(2) void seek(long pos):将文件记录指针定位到pos位
(3) void close():关闭文件,文件访问结束后一定要关闭文件,否则会发生意想不到的错误。
(4) long length() :返回此文件的长度(字节)。
(5) void setLength(long newLength) throws IOException :设置文件的长度
如果 length 方法返回的文件的现有长度大于 newLength 参数,则该文件将被截短。在此情况下,如果 getFilePointer 方法返回的文件偏移量大于 newLength,那么在返回此方法后,该偏移量将等于 newLength。
如果 length 方法返回的文件的现有长度小于 newLength 参数,则该文件将被扩展。在此情况下,未定义文件扩展部分的内容。
(6) 写方法:write(),writeBoolean(),writeByte(),writeBytes(),writeChar(),writeChars()
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
import java.io.FileFilter;
//import javax.swing.filechooser.FileFilter;
public class InputOut {
public static void main(String[] args) throws IOException {
try {
RandomAccessFile rf = new RandomAccessFile("a.txt", "rw");
//输出默认的指针位置
System.out.println(rf.getFilePointer());
//写入字符‘A’和‘B’
rf.write('A');
System.out.println(rf.getFilePointer());
rf.write('B');
//写入GBK编码的字符
String s = "中";
byte[] gbk = s.getBytes("gbk");
rf.write(gbk);
//文件末尾
System.out.println(rf.getFilePointer());
//移动文件指针到"头"
rf.seek(0);
//一次性读取内容到buf汇总
byte[] buf = new byte[(int)rf.length()];
//从文件中读取内容到buf数组中。尽可能的填满
rf.read(buf);
System.out.println(Arrays.toString(buf));
} catch (Exception e) {
e.printStackTrace();
}
}
}
本文详细介绍了Java中File类的常用方法,包括文件的创建、读取、列出目录等操作,以及如何使用文件过滤器筛选特定类型的文件。同时,深入探讨了RandomAccessFile类的使用,讲解了其随机读写文件的功能,包括文件指针的位置控制、文件长度的获取与设置,以及各种写入方法。
2616

被折叠的 条评论
为什么被折叠?



