JAVAIO:BIO(阻塞式IO)-基于抽象类
核心五个类(file,outputstream(字节的输出流),、InputStream、Reader(字符输入流)、Writer)
一个接口(Serializable)
- File文件操作类
-JAVA.IO包中,file类时唯一一个与文件本身操作(创建,删除,取得信息)有关,与文件内容无关的程序类
1.1file类(即可描述真实文件,也是个文件夹或路径)的基本使用
File类的两种实例化方法
Public File(String pathname)【传入文件的绝对路径:不管在哪个路径,都可以找到】
Public File(String parent ,String child)
Public File (URI uri):uri为一个网址,可通过网络路径拿到一个File文件
创建新文件
Public boolean createNewFile()throw IOException (Io中的所有异常均是受查异常)
package www.wl.java;
import java.io.File;
import java.io.IOException;
public class Test{
public static void main(String[] args) {
//取得file对象
File file =new File("C:\\Users\\Administrator\\Desktop\\javaIO.JAVA") ;
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
判断文件是否存在
Public boolean exists()
删除文件
Public boolean delete()
package www.wl.java;
import java.io.File;
import java.io.IOException;
public class Test{
public static void main(String[] args) {
//取得file对象
File file =new File("C:\\Users\\Administrator\\Desktop\\javaIO.JAVA") ;
//判断是否存在
if(file.exists()) {
file.delete();
}else{
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
路径分隔符:File.separator
File file =new File("C:"+File.separator+"Users"+File.separator+
"Administrator"+File.separator+"Desktop"+File.separator+"javaIO.JAVA") ;
1.2目录操作
1.2.1取得父路径和父FilePublic String getParent():取得父路径的目录
Public File getParentFile():取得父路径的File对象
1.2.2创建目录(无论有多少级父目录,都会一次性创建)
Public boolean mkdirs()
package www.wl.java;
import java.io.File;
import java.io.IOException;
public class Test{
public static void main(String[] args) {
//1.取得file对象
File file =new File("C:"+File.separator+"Users"+File.separator+
"Administrator"+File.separator+"Desktop"+File.separator+"www"+File.separator+"bit"+File.separator+"io"+
File.separator+"javaIO.JAVA") ;
//2.判断父路径是否存在,不存在创建多级父路径
if(! file.getParentFile().exists()){
file.getParentFile();.mkdirs();//一次创建多级父目录
}
//3.判断文件是否存在,不存在则创建文件
if (file.exists()){
file.delete();
}else {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
1.3取得文件信息
判断File对象是否为文件
Public boolean isFile()
判断File对象是否为文件夹
Public boolean isdirectory()
取得文件大小
Public long length()------以字节为单位
取得文件修改日期
Public long lastModified()
什么时候会用到long为返回值 :
当数据传输,二进制流以及文件相关的操作
package www.wl.java;
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class Test{
public static void main(String[] args) {
//取得file对象
File file =new File("C:"+File.separator+"Users"+File.separator+
"Administrator"+File.separator+"Desktop"+File.separator+"www") ;
//取得父文件对象
File parentFile = file.getParentFile();
if (file.exists()&&file.isFile()){
System.out.println(file.length()/1024);//多少k
// System.out.println(file.lastModified());
System.out.println(new Date(file.lastModified()));
}
}
}
file.lastModified():从1970年开始计时
列举一个目录的全部组成;
Public File[] listFiles()
package www.wl.java;
import java.io.File;
import java.io.IOException;
import java.util.Date;
public class Test{
public static void main(String[] args) {
//取得file对象
File file =new File("C:"+File.separator+"Users"+File.separator+
"Administrator"+File.separator+"Desktop") ;
listAllFiles(file);
//取得父文件对象
/**File parentFile = file.getParentFile();
if (file.exists()&&file.isDirectory()){//文件存在,并且文件是一个路径(文件夹),才能拿到它的文件组成
File[]files = file.listFiles();//到路径就停
for (File file1:files){
System.out.println(file1);
}*/
}
public static void listAllFiles(File file){
if(file.exists()&&file.isFile()) {
System.out.println(file);
}else{
//此时file对象为文件夹
File[]files = file.listFiles();
for (File file1:files){
listAllFiles(file1);
}
}
}
}
package www.wl.java;
import java.io.File;
IO相关处理属于阻塞式耗时操作,一般放在子线程中进行
public class Test{
public static void main(String[] args){
//取得file文件
File file =new File("C:\\") ;
//IO相关处理属于阻塞式耗时操作,一般放在子线程中进行
new Thread(()->{
long start = System.currentTimeMillis();
listAllFiles(file);
long end = System.currentTimeMillis();
System.out.println("遍历结束"+(end-start)+”毫秒”);
}).start();
}
public static void listAllFiles(File file) {
if (file.exists() && file.isFile()) {
System.out.println(file);
} else {
File[] files = file.listFiles();
if (files != null) {
for (File file1 : files) {
listAllFiles(file1);
}
}
}
}
}