File类
File对象主要用来获取文件本身的信息
创建File对象的构造方法有三个方法
1.File(String filename)
2.File(String directoryPath,String filename)
3.File(File f,String filename)
注:filename为文件名字,daitectoryPath为文件路径,f是指定成一个目录文件
使用File(String filename)创建文件时,该文件被认为与当前应用程序在同一路径
1.文件的属性
- public String getName():获取文件名字
- public boolean canRead():判断文件是否可读
- public boolean canWrite():判断文件是否可写
- public boolean exists():判断文件是否存在
- public long length():获取文件长度(单位:字节)
- public String getAbsolutePath():获取文件绝对路径
- public String getParent():获取文件父目录
- public boolean isFile():判断文件是否是一个普通文件
- public boolean isDirectory():判断文件是否是一个目录
- public boolean isHidden():判断是否为隐藏文件
- public long lastModified():获取文件最后修改时间(时间从1970年午夜至文件最后修改时刻的毫秒数)
例:
import java.io.File;
public class Filetext {
public static void main(String[] args) {
File f1 = new File("F:\\瑞吉外卖\\Mavenproject\\homework\\src","Filetext.java");
System.out.println(f1.getName()+"是可读的吗?"+f1.canRead()+"可以被写入吗?"+f1.canWrite());
System.out.println(f1.getName()+"的长度"+f1.length());
System.out.println(f1.getName()+"是普通文件吗?"+f1.isFile());
System.out.println(f1.getName()+"是目录吗?"+f1.isDirectory());
System.out.println(f1.getName()+"最后修改时间"+f1.lastModified());
}
}
/*
运行结果:
Filetext.java是可读的吗?true可以被写入吗?true
Filetext.java的长度620
Filetext.java是普通文件吗?true
Filetext.java是目录吗?false
Filetext.java最后修改时间1680312070213
*/
目录
import java.io.File;
import java.io.FilenameFilter;
public class homework3 {
public static void main(String[] args) {
File dir = new File("F:\\瑞吉外卖\\Mavenproject\\homework\\src");
FileAccept fileAccept = new FileAccept();
fileAccept.setExtendName("java");
String filename[] = dir.list(fileAccept);//以字符串形式返回目录下的指定类型的所有文件
//String filename[] = dir.listFiles(fileAccept) 用File对象形式返回目录下的指定类型的所有文件
for (String name : filename) {
System.out.println(name);
}
}
}
class FileAccept implements FilenameFilter {
private String extendName;
public void setExtendName(String s) {
extendName = "." + s;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith(extendName);
}
}
文件的创建与删除
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class homework5 {
public static void main(String[] args) {
byte[] a="新年快乐".getBytes();
byte[] b="Happy New Year".getBytes();
File file = new File("E:\\桌面\\JAVA", "main.txt");
try {
if (file.createNewFile()/*如果不存在该文件,调用createNewFile()方法进行创建*/) {
System.out.println("文件创建成功");
OutputStream out = new FileOutputStream(file);
out.write(a);
System.out.println("a写入成功");
out=new FileOutputStream(file,true);
out.write(b,0,b.length);
System.out.println("b写入成功");
}
System.out.println("删除文件"+file.getName()+file.delete()+"成功");//文件创建成功后运行delete()方法进行删除操作
} catch (IOException e) {
System.out.println(e);
}
}
}
/*
* 运行结果:
* 文件创建成功
a写入成功
b写入成功
删除文件main.txtfalse成功
* */
运行可执行文件
import java.io.File;
public class homework4 {
public static void main(String[] args) {
try {
Runtime ce=Runtime.getRuntime();//调用getRuntime()静态方法创建对象
File file = new File("C:\\Program Files (x86)\\Microsoft\\Edge\\Application","msedge.exe");//指定可执行文件的路径
ce.exec(file.getAbsolutePath());//打开可执行文件
} catch (Exception e) {
System.out.println(e);
}
}
}
//运行结果为:打开电脑的Edge浏览器
文件字节流
创建文件字节输入
输入流
FileInputStream(String name) //使用给定的文件名name创建FileInputStream对象
FileInputStream(File file) //使用File对象创建FileInputStream对象
注:当使用文件输入流构造方法建立通往文件的输入流时,可能会出现错误(即 异常)。例:试图打开的文件不存在时,需要用try...catch进行捕获
int read(byte b[]) //从文件读取b.length字节
int(byte b[],int off,int len)//读取len字节,并将读取的字节存放在数组b中,off是首字节在数组中的存放位置
输出流
FileOutputStream(String name) //使用给定的文件名name创建FileInputStream流
FileOutputStream(File file) //使用File对象创建FileInputStream流
public void write(byte b[])//写b.length字节到文件
public void write(byte b[],int off,int len)//从给定字节数组中起始偏移量off处写len字节到文件,b是存放了数据的字节数组,off为数据的起始偏移量,len为写出的字节数
注:FileOutputStream创建输出流时,可以选择是否刷新文件:
FileOutputStream(String name,boolean append)
FileOutputStream(File file,boolean append)
如果append取值为true,输出流不会刷新所指向的文件(假如文件已存在),输出流的write的方法将从文件的末尾开始向文件写入数据;如果append取值为false,输出流将刷新所指向的文件(假如文件已存在,使得文件长度为0)
使用输入输出流最后要记得关闭,通过调用close()方法。