File类
File类的常用方法
java.io.File类的对象代表一个文件或者目录,File类提供了对文件或目录的所有操作。
public class Test {
public static void main(String[] args) throws IOException {
//file对象代表一个文件,并不是真正的在磁盘上创建文件
// File file = new File("E:/test/test.txt");
File file = new File("E:\\test\\test.txt");
//检查一个文件或目录是否存在
System.out.println(file.exists());
//如果文件不存在就创建并返回true,否则不创建并返回false,是真正的创建文件
System.out.println(file.createNewFile());
//获取文件或目录的名称
System.out.println(file.getName());//test.txt
//获取文件或目录的路径
System.out.println(file.getAbsolutePath());//E:\test\test.txt
//返回代表其父目录的文件对象
System.out.println(file.getParentFile());
//返回代表其父目录的文件对象
File parent = file.getParentFile();
System.out.println(parent.getName());//获取名称
//获取文件的大小,以字节为单位
System.out.println(file.length());
//判断此对象是否代表一个文件
System.out.println(file.isFile());
//判断此对象是否代表一个目录
System.out.println(parent.isDirectory());
//是否是隐藏文件
System.out.println(file.isHidden());
//是否可读
System.out.println(file.canRead());
//是否可写
System.out.println(file.canWrite());
//重命名文件
// System.out.println(file.renameTo(new File("E:/test/test1.txt")));
//删除文件
System.out.println(file.delete());
}
}
public class Test{
public static void main(String[] args) {
File file = new File("E:/test1");
if (!file.exists()) {
// 在磁盘上创建目录
file.mkdir();
}
//获取目录中的所有文件
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f.getAbsolutePath());
}
}
}
文件过滤
public class Test{
public static void main(String[] args) {
File file = new File("E:/test1");
if (!file.exists()) {
// 在磁盘上创建目录
file.mkdir();
}
//获取目录中的所有文件(包括文件和目录)
File[] files = file.listFiles(new FilenameFilter() {
//返回true代表接受文件,返回false代表不接受文件
@Override
public boolean accept(File dir, String name) {
//dir是文件所在的目录
//只接受txt文件
return name.endsWith(".txt");
}
});
for (File f : files) {
System.out.println(f.getAbsolutePath());
}
}
}
public class Test{
public static void main(String[] args) {
File file = new File("E:/test1");
if (!file.exists()) {
// 在磁盘上创建目录
file.mkdir();
}
//获取目录中的所有文件(包括文件和目录)
File[] files = file.listFiles(new FileFilter() {
//返回true代表接受文件,返回false代表不接受文件
@Override
public boolean accept(File f) {
//只接受10个字节以上的文件
return f.length() >= 10;
}
});
for (File f : files) {
System.out.println(f.getAbsolutePath());
}
}
}
IO
流实现文件的读写
FileWriter 提供了关于写文件的基本操作。
public class Test{
public static void main(String[] args) {
FileWriter fw = null;
try {
//创建一个输出流,如果文件不存在,就会创建一个文件
fw = new FileWriter("E:/test/test.txt");
//向流中写
fw.write("中国你好");
//刷新流
fw.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
//关闭流
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public class Test{
public static void main(String[] args) {
FileReader fr = null;
try {
//创建一个输入流
fr = new FileReader("E:/test/test.txt");
//从流中读
// System.out.println((char)fr.read());//读取一个字符
char[] chars = new char[256];
//将文件中的内容读到字符数组中,尝试读取chars.length个
//返回实际读到的字符数
int bs = fr.read(chars);
char[] arr = Arrays.copyOf(chars, bs);
String str = new String(arr);
System.out.println(str);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
流实现文件的拷贝
单字符拷贝 每次读写一个字符。
public class Test{
public static void main(String[] args) {
FileReader fr = null;
FileWriter fw = null;
try {
//输入流,连接源文件和程序
fr = new FileReader("E:/test/test.txt");
//输出流,连接程序和目标文件
fw = new FileWriter("E:/test1/test.txt");
int c = 0;//保存每次读到的字符
//read方法每次从输入流读取一个字符
//如果read方法读到文件的末尾,那么它就返回-1
while(-1 != (c = fr.read())){
//每次向输出流写入一个字符
fw.write(c);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
//关闭输入流
fr.close();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
//刷新流
fw.flush();
//关闭输出流
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
字符数组拷贝 每次读写一个字符数组.。
public class Test{
public static void main(String[] args) {
FileReader fr = null;
FileWriter fw = null;
try {
//输入流,连接源文件和程序
fr = new FileReader("E:/test/test.txt");
//输出流,连接程序和目标文件
fw = new FileWriter("E:/test1/test.txt");
char[] chars = new char[4];//保存读取到的字符
int len = 0;//保存实际读取到的字符数
//read方法尝试读取chars.length个字符,返回实际读到的字符数
//如果读到文件的末尾,则返回-1
while(-1 != (len = fr.read(chars))){
//将字符数组中的字符写入到输出流
//第二个参数表示从字符数组的哪个索引处开始取字符
//第三个参数表示写多少个字符
fw.write(chars, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
//关闭输入流
fr.close();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
//刷新流
fw.flush();
//关闭输出流
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
字节流与字符流
字节流和字符流拷贝 字节流每次读写一个字节,字符流每次读写一个字符。 字节流可以读写任何文件,字符流只能读写文本文件。 字节流继承于InputStream和OutputStream 字符流继承于Reader和Writer 凡是带Stream的都是字节流,否则就是字符流 如果要读写二进制文件,就使用字节流。 如果要读写文本文件,并且需要在程序中查看其内容,就使用字符流。