import java.io.File;
import java.io.IOException;public class Demo1 {public static void main(String[] args) throws IOException {//根据文件路径创建一个file实例,路径可以是绝对路径或者相对路径(相对路径是基于该该工程所在的位置)File f1 = new File("D:/test.txt");//绝对路径//File f1 = new File("./test.txt");//相对路径//可以发现绝对路径和相对路径执行的结果是不同的,可以自己编写代码观察//FILE对象父目录路径System.out.println(f1.getParent());//FIle对象的纯文件名称System.out.println(f1.getName());//File对象的文件路径System.out.println(f1.getPath());//File对象的绝对路径System.out.println(f1.getAbsolutePath());//File对象的修饰过的绝对路径System.out.println(f1.getCanonicalPath());}//绝对路径结果:
// D:\
// test.txt
// D:\test.txt
// D:\test.txt
// D:\test.txt//相对路径结果:
// .
// test.txt
// .\test.txt
// D:\编程\java\javacode\2022-9-28\.\test.txt
// D:\编程\java\javacode\2022-9-28\test.txt
}
import java.io.File;
import java.io.IOException;
//文件的判断方法和创建
public class Demo2 {public static void main(String[] args) throws IOException {//创建FILE文件对象File f2 = new File("./1.txt");// File对象描述的文件是否真实存在System.out.println(f2.exists());//File对象代表的文件是否是一个目录System.out.println(f2.isDirectory());//File对象代表的文件是否是一个普通文件System.out.println(f2.isFile());//创建文件基于当前工程所在的目录而创建,当前目录是创建该项目的位置//目录就是文件夹,不是文件//根据File对象,自动创建一个空文件。成功创建后返回trueSystem.out.println(f2.createNewFile());}
}
import java.io.File;//文件的删除
public class Demo3 {public static void main(String[] args) {File f3 = new File("./1.txt");//判定文件是否存在System.out.println(file.exists());//删除文件f3.delete();//deleteOnExit 进程退出时删除文件//删除之后,看是否存在System.out.println(f3.exists());}
}
import java.io.File;
import java.io.IOException;
public class Demo4{public static void main(String[] args) throws IOException {File file = new File("some-file.txt"); // 要求该文件不存在,才能看到相同的现
象System.out.println(file.exists());System.out.println(file.createNewFile());System.out.println(file.exists());file.deleteOnExit();System.out.println(file.exists());}
}//false
//true
//true
//true
//程序结束后,文件被删除了 可以自行运行代码观察
//创建文件目录
import java.io.File;
import java.io.IOException;
public class Demo5 {public static void main(String[] args) throws IOException {File dir = new File("no-dir"); // 要求该目录不存在,才能看到相同的现象System.out.println(dir.isDirectory());System.out.println(dir.isFile());System.out.println(dir.mkdir());System.out.println(dir.isDirectory());System.out.println(dir.isFile());}
}
import java.io.File;
import java.io.IOException;
public class Demo7{public static void main(String[] args) throws IOException {File dir = new File("some-parent\\some-dir"); // some-parent 和 somedir 都不存在System.out.println(dir.isDirectory());System.out.println(dir.isFile());System.out.println(dir.mkdir());System.out.println(dir.isDirectory());System.out.println(dir.isFile());}
}
mkdir方法无法创建多级目录,而mkdirs可以解决该问题
import java.io.File;
import java.io.IOException;
public class Demo8 {public static void main(String[] args) throws IOException {File dir = new File("some-parent\\some-dir"); // some-parent 和 somedir 都不存在System.out.println(dir.isDirectory());System.out.println(dir.isFile());System.out.println(dir.mkdirs());System.out.println(dir.isDirectory());System.out.println(dir.isFile());}
}
import java.io.File;
import java.io.IOException;//文件的重命名
public class Demo9 {public static void main(String[] args) throws IOException {//前提要存在aaa.txt才能重命名成功File srcFile = new File("aaa.txt");//aaa.txt必须存在File destFile = new File("bbb.txt");//bbb.txt不存在System.out.println(file.exists());System.out.println(dest.exists());srcFile.renameTo(destFile);System.out.println(file.exists());System.out.println(dest.exists());}
}
import java.io.File;
import java.util.Arrays;//List的使用
public class Demo10 {public static void main(String[] args) {//列出当前目录下的所有文件File f6 = new File("./IODirectory2");//File对象代表的目录下的所有文件名String[] results = f6.list();System.out.println(Arrays.toString(results));//File对象代表的目录下的所有文件,以File对象表示File[] files = f6.listFiles();}
}
import java.io.FileNotFoundException;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;//文件内容的读(InputStream字节流)
public class Demo11 {public static void main(String[] args) throws IOException {//InputStream是一个抽象类,只能构造一个实现该抽象类的类的实例//以字节流的形式打开文件//指定文件的路径,相对路径和绝对路径均可,会报文件没找的异常->FileNotFoundException//类似与C语言中的fOpen方法InputStream i1 = new FileInputStream("./bbb.txt");//read函数的三个版本
//read(),读取一个字节的数据,返回-1代表已经完全读完了
//read(byte[] b),最多读取 b.length字节的数据到b中,返回实际读到的数量;-1代表以及读完了
//read(byte[] b,int off, int len),最多读取len - off字节的数据到b中,放在从off开始,返回实际读到的数量;-1代表以及读完了//使用字节流读文件while(true){//读一个字节,读出来的每个字节都是ASCII码值int b = i1.read();//read读到文件末尾返回-1if(b == -1){break;}char res = (char)b;System.out.print(res);}//关闭文件,和打开文件配套使用,注意打开了文件一定要关闭文件i1.close();}
}
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;//文件的写(OutputStream字节流)
public class Demo12 {public static void main(String[] args) throws IOException {//打开要写的文件//指定的路径可以是相对路径或者绝对路径OutputStream o1 = new FileOutputStream("./bbb.txt");//write函数://write(int b) 写入要给字节的数据//write(byte[] b) 将b这个字符数组中的数据全部写入打开的文件中//write(byte[] b, int off,int len) 将b这个字符数组中从 off 开始的数据写入打开的文件中,一共写len个//flush函数
//我们知道 I/O 的速度是很慢的,所以,大多的OutputStream为了减少设备操作的次数,在写数据的时候都会将数据先暂时写入内存的
//一个指定区域里,直到该区域满了或者其他指定条件时才真正将数据写入设备中,这个区域一般称为缓冲区。但造成一个结果,就是我们写的
//数据,很可能会遗留一部分在缓冲区中。需要在最后或者合适的位置,调用 flush(刷新)操作,将数据刷到设备中。//写操作,打开文件存在就会把原有文件的内容清空,然后继续写入o1.write(97);o1.write(98);o1.write(99);//关闭写入的文件o1.close();}
}
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;//文件的读(Reader字符流)
public class Demo13 {public static void main(String[] args) throws IOException {//文件以字符流的形式打开Reader r1 = new FileReader("./bbb.txt");//使用字符流读文件while(true){int ret = r1.read();//读完if(ret == -1){break;}char ch = (char)ret;System.out.println(ch);}//文件的关闭r1.close();}
}
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;//文件的写(Writer字符流)
public class Demo14 {public static void main(String[] args) throws IOException {//字符流的形式打开文件//会把原有的内容清空,再写入Writer w1 = new FileWriter("./bbb.txt");//写入文件w1.write("hello world");//关闭文件w1.close();}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;//使用Scanner读文件
public class Demo15 {public static void main(String[] args) throws IOException {//Scanner读文本文件InputStream i1 = new FileInputStream("./bbb.txt");Scanner scanner =new Scanner(i1);while(scanner.hasNext()){System.out.println(scanner.next());}//如果在close之前抛出异常就可能会造成文件泄漏//因此要使用try finally或者try(with resource)去用scanner.close();i1.close();//使用这种版本可以不造成资源泄露
// try(InputStream i1 = new FileInputStream("./bbb.txt");){
// Scanner scanner =new Scanner(i1);
//
// while(scanner.hasNext()){
// System.out.println(scanner.next());
// }
// }
//大家可以自己选择用哪一种方式}
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;public class Demo16 {使用PrinterWriter写文件public static void main(String[] args) throws IOException {OutputStream outputStream = new FileOutputStream("./bbb.txt");PrintWriter printWriter = new PrintWriter(outputStream);printWriter.println("hello world");printWriter.printf("%d\n",10);printWriter.close();outputStream.close();}
}