文件操作
File类
1.1概述
java.io.File类是文件和目录路径名的抽象表示主要用于文件和目录的创建,查找和删除的操作
1.2构造方法
•public File(String pathname):通过将给定的路径名字符串转换为抽象路径名来创建新的file实例。
•public File(String parent ,String child):从父六记名字符串和子路记名字符串创真心的file实例。
•Public File(File parent ,String child):从父抽象路径名和子路径名字符串创建新的file实例。
•构造举例代码如下:
package demo01;
import java.io.File;
import java.io.IOException;
/*
- file 类
- 创建一个文件、文件夹
- 删除一个文件、文件夹
- 获取文件、文件夹
- 判断文件或者文件夹
- 对文件进行遍历
- 获取文件大小
- File 是一个与操作系统无关的类
- 记住三个单词:
- file :文件
- directory:目录、文件夹
- path:路径
- */
public class Demo01File {
public static void main(String[] args) throws IOException {
//路径分隔符
String pathSeparator=File.pathSeparator;
System.out.println(pathSeparator);//win 是 分号;Linux :冒号
String separator=File.separator;
System.out.println(separator);//文件名称分割符 \ linux : /root/home/
//绝对路径
//相对路径…/…/
//构造方法演示
//show01();
//show02("D:\\xiaojava\\day20_code");
//show03();
//常用方法演示
//show04();
//show05();
//show06();
//show07();
//show08();
//show09();
//show10();
show11();
//show12();
}
private static void show12() {
File f1=new File("D:\\xiaojava\\day20_code\\hello.java");
boolean b1=f1.delete();
System.out.println(b1);
//直接从硬盘删除,不会放入回收站
File f2=new File("1\\2\\33\\44");//相对路径会自动补齐
boolean b2=f2.delete();
System.out.println(b2);
}
private static void show11() {
File f1=new File("D:\\xiaojava\\day20_code\\hello.java");
boolean b1=f1.mkdir();//只能创建一个文件夹
System.out.println(b1);
File f2=new File("D:\\xiaojava\\day20_code\\1\\2\\33\\44\\hello.java");
boolean b2=f2.mkdir();//递归创建文件夹
System.out.println(b2);
}
private static void show10() throws IOException {
File f1=new File("D:\\xiaojava\\day20_code\\hello.java");
boolean b1=f1.createNewFile();
System.out.println(b1);
//第二次执行的时候返回 false 因为文件已经存在
File f2=new File("D:\\xiaojava\\day20_code\\新建文件夹");
//不要看文件的名字,必须看类型
boolean b2=f2.createNewFile();
System.out.println(b2);
}
private static void show09() {
File f1=new File("D:\\xiaojava\\day20_code");
if(f1.exists()) {
System.out.println(f1.isDirectory());
System.out.println(f1.isFile());
}
}
private static void show08() {
File f1=new File("D:\\xiaojava\\day20_code");
System.out.println(f1.exists());
File f2=new File("D:\\rxp\\java\\20\\day20_code\\classfive");
System.out.println(f2.exists());
File f3=new File("D:\\rxp\\java\\20\\day20_code\\classpath");
System.out.println(f3.exists());
File f4=new File("D:\\rxp\\java\\20\\day20_code\\hello.java");
System.out.println(f4.exists());
}
//注意:文件夹没有大小概念,不能获取文件夹大小
private static void show07() {
File f1=new File("D:\\xiaojava\\day20_code");
System.out.println(f1.length());//文件夹的大小是0
File f2=new File("D:\\rxp\\java\\20\\day20_code\\classfive");
System.out.println(f2.length());//不存在文件夹,打印大小为0
File f3=new File("D:\\rxp\\java\\20\\day20_code\\classpath");
System.out.println(f3.length());//最后为文件的情况,去文件存在,打印大小为
File f4=new File("D:\\rxp\\java\\20\\day20_code\\classpath");
System.out.println(f4.length());
}
private static void show06() {
File f1=new File("D:\\rxp\\java\\20\\day20_code\\hello.java");
File f2=new File("D:\\rxp\\java\\20\\day20_code");
System.out.println(f1.getName());
//获取的是构造方法传递路径结尾部分
System.out.println(f2.getName());
}
private static void show05() {
File f1=new File("D:\\rxp\\java\\20\\day20_code\\hello.java");
File f2=new File("a.txt");
String path1=f1.getPath();
System.out.println(path1);
System.out.println(f2.getPath());
System.out.println(f1);
System.out.println(f1.toString());
}
private static void show03() {
// TODO 自动生成的方法存根
}
private static void show04() {
File f1=new File("D:\\rxp\\java\\test\\hello.java");
String absolutepath1=f1.getAbsolutePath();
System.out.println(absolutepath1);
File f2=new File("hello.java");//相对路径创建
//创建的时候,放在项目路径下面
String absolutepath2=f2.getAbsolutePath();
System.out.println(absolutepath2);//获取绝对路径
}
//private static void show01() {
File f1=new File("D:\\rxp\\java\\test");
//System.out.println(f1);
File f2=new File("D:\\\\rxp\\\\java\\\\test\\\\hello.java");
//仅仅是创建了File这样的对象,并不会真去检验路径的正确与否
///System.out.println(f2);
//}
private static void show02(String parent, String child) {
File f1=new File(parent,child);
System.out.println(f1);
}
private static void show01() {
File f1=new File("D:\\rxp\\java\\test");
System.out.println(f1);
File f2=new File("D:\\rxp\\java\\test");
}
}
1.3判断功能的方法
•public boolean exists():此file表示的文件或目录是否实际存在?
•public boolean is directory():此file表示的是否为目录?
•public boolean isFile():此file表示的是否为文件?
1.4目录的遍历
•public String[] list():返回一个string数组,表示该file目录中的所有子文件或目录
•public File list File():返回一个file数组,表示该file目录中的所有的子文件或目录
io的分类
根据数据流向分为输入流和输出流
输入流把数据,从其他设备上读取到内存中的流
输出流把数据从内存中写出到其他设备上的流
FiOueOutStream
OutputStream有很多子类,我们从最简单的一个子类开始
java.iO.FileOutputStream类是文件输出你了,用于将数据写到文件中
构造方法
•public FileOutputStream(File file):创建文件输出你哦,已写入有指定的file对象表示的文件
•public FileOutputStream(String name):创建文件输出流一指定的名称写入文件。
当你创建一个流对象时,必须传入一个文件路径,该路径下,如果没有这个文件,会创建该文件,如果有这个文件,会清空这个文件的数据。
写出字节数据
1.写出字节write(int b)方法,每次可以写出一个字节数据代码如下
代码如下:
package demo02;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/*
- 构造方法的作用:
- 1.创建了一个FileOutputStream对象
- 2.根据构造方法中传递的文件/文件路径,创建一个空文件
- 3.会把FileOutputStream对象指向创建的文件
- 写入过程
- java程序 -->jvm(java虚拟机) ==>os(操作系统上) —>会调用对应的驱动 --> 把数据写入文件
/
public class Demo02OutputStream {
public static void main(String[] args) throws IOException {
//创建一个FileOutputStream 对象,构造方法中传入数据目的地
FileOutputStream fos=new FileOutputStream(“a.txt”);
//调用write方法,讲数据写入到文件中
//fos.write(97);
//fos.write(98);
//fos.write(98);
//释放资源
fos.write(97);
//fos.write(100);错误写法
/
fos.write(49);
fos.write(48);
fos.write(48);
*/
//byte[] bytes= {65,66,67,68};
//byte[] bytes= {-65,-66,-67,-68};//会被当成中文翻译
byte[] bytes= {65,66,67,68};
fos.write(bytes,2,3);
fos.close();
}
}