File类
File类:一个File对象可以表示一个具体的文件或目录
File f1 = new File("D:\\MySQL\\MySQL Router 8.0");
System.out.println(f1.exists());
System.out.println(f1.canRead());
System.out.println(f1.canWrite());
System.out.println(f1.getAbsolutePath());
System.out.println(f1.getParent());
System.out.println(f1.isDirectory());
System.out.println(f1.isFile());
System.out.println(f1.lastModified());
System.out.println(new Date(f1.lastModified()));
通过各种方法对文件和文件夹进行判断操作
System.out.println(f1.createNewFile());//创建文件/文件夹
System.out.println(f1.delete());//删除文件/文件夹
File file new File("D:/download");
System.oUt.println(file.mkdir());创建单级文件夹
File file new File("D:/download/a/b");
System.oUt.println(file.mkdirs()),创建多级文件夹
File file new File(pathname:"D:/download/a");
file.delete();//删除一个文件夹时,文件夹中必颈是空
输入及输出的概念
输入输出把电脑硬盘上的数据读到程序中,称为输出,即input,进行数据的read操作从程序王外部设备写数据,称为输出,即output,进行数据的write操作
输入流与输出流
java中把用于对文件输入和输出的类称为流
有一些用于输入数据,有一些用于输出数据
有一些类是以字节为单位读取数据的,有一些是以字符为单位读取数据的
字节流和字符流
字节流,读取时以字节为单位,可以读取电脑中任意文件
字符流,读取时以字符为单位,只能读取文本文件txt
输入输出节点字节流
FileInputStream inputStream = new FileInputStream("F:\\demo.txt");
byte[] bytes = new byte[16];
int size = 0;
FileOutputStream fileOutputStream = new FileOutputStream("E:\\test.txt");
while ((size=inputStream.read(bytes))!=-1){
System.out.println(size);
fileOutputStream.write(bytes,0,size);
}
设置一个byte数组用来定义每次byte数组的长度,在write方法中一次写出byte数组长度的内容,从0开始,写size个
节点流与处理流
节点流:直接封装的是文件数据本身
处理流:封装的是其他节点流对象,在节点流的基础上又提供了其他的增强功能
缓冲处理流:
FileInputStream inputStream = new FileInputStream("F:\\demo.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
//在原有的输入流外部套上一层缓冲流,缓冲流自带一个8192长度的数组
//用于缓冲,当我们自己定义的数组长度>=缓冲区的长度时,直接输出
//当我们的数组<缓冲区长度时,会先将数据存入缓冲区,待缓冲区存满后进行输出
数据输入输出字节流:
FileOutputStream fileOutputStream = new FileOutputStream("D:/message.txt");
DataOutputStream dataOutputStream = new DataOutputStream(fileOutputStream);
dataOutputStream.writeUTF(message);
FileInputStream fileInputStream = new FileInputStream("F:/message.txt");
DataInputStream dataInputStream = new DataInputStream(fileInputStream);
dataInputStream.readUTF(message);
输入输出节点字符流
Reader:输入字符流
InputStreamReader:转换流,将字节转换为字符
Writer:输出字符流
OutputStreamWriter:转换流,将字符转换为字节
FileReader reader = new FileReader("D:/testtttt.txt");
FileWriter writer = new FileWriter("D:/testt.txt",true);
BufferedReader bufferedReader = new BufferedReader(reader);
BufferedWriter bufferedWriter = new BufferedWriter(writer);
String length = null;
while ((length=bufferedReader.readLine())!=null){
bufferedWriter.write(length);
bufferedWriter.newLine();
}
bufferedReader.close();
bufferedWriter.close();
对象输入输出流
ObjectStream:把java中的对象输出到文件中,从文件中把对象输入到程序中
为什么要把对象输出到文件?
数据储存在对象中,对象是在内存中储存,一旦程序运行结束,对象就会销毁
若要将对象信息长久储存,则需要将对象输出到文件中,做到长久保存
把对象输出到文件的过程也称为对象的序列化(如果一个类需要被序列化到文件中,那么这个类就需要实现Serializable接口,实现后自动为该类生成一个序列化编号,编号是类的唯一标识)
但是自动生成的编号在类信息改变后会重新为类生成一个编号,可以在类中显示的生成一个编号,这样类信息改变后也不会创建新的编号
再把对象从文件输入到程序的过程称为反序列化,反序列时会生成一个新的对象,所以反序列化也是创造对象的一种方式