目录
File
1.概述
File对象就表示一个路径,可以是文件或文件夹的路径;这个路径可是存在的,也允许是不存在的,不存在的指只是声明,并不一定会用;
路径则分为绝对路径与相对路径,前者是一个固定的路径,从盘符开始,后者是相对于某个位置开始;
2.构造方法
1.public File(String pathname) 将字符串表示的路径变成file对象
2.public File(String parent,String child) 把父级路径和子级路径拼接
3.public File(File parent,String child) 把父级路径和子级路径拼接
//父级路径:即最后一级路径前的所有,下面例子(D:\Code\javaCode\File\aa.txt)中的D:\Code\javaCode\File;
//子级路径:即当前最后一级路径,下面例子中的aa.txt;
如:
public static void main(String[] args) {
//1.将字符串表示的路径变成file对象
File file=new File("D:\\Code\\javaCode\\File\\aa.txt");
//2.把父级路径和子级路径拼接
File file1=new File("D:\\Code\\javaCode\\File","aa.txt");
String path1="D:\\Code\\javaCode\\File";
String path2="aa.txt";
File file2=new File(path1,path2);
String path3="D:\\Code\\javaCode\\File";
File file3=new File(path3,"aa.txt");
String path4="aa.txt";
File file4=new File("aa.txt",path4);
//3.把父级路径和子级路径拼接
File file5=new File("D:\\Code\\javaCode\\File");
String path5="aa.txt";
File file6=new File(file3,path5);
}
3.成员方法
1.获取
方法 | 描述 |
public String getAbsolutePath() | 获取绝对路径 |
public String getPath() | 获取路径 |
public String getName() | 获取名称 |
public String getParent() | 获取上层文件目录路径。若无,返回null |
public long length() | 获取文件长度(即:字节数)。不能获取目录的长度。 |
public long lastModified() | 获取最后一次的修改时间,毫秒值 |
public String[] list() | 获取指定目录下的所有文件或者文件目录的字符串数组 |
代码演示:
public void test2(){
File file1 = new File("aa.txt");
File file2 = new File("D:\\file\\bb.txt");
System.out.println(file1.getAbsolutePath());
System.out.println(file1.getPath());
System.out.println(file1.getName());
System.out.println(file1.getParent());
System.out.println(file1.length());
System.out.println(new Date(file1.lastModified()));
System.out.println();
System.out.println(file2.getAbsolutePath());
System.out.println(file2.getPath());
System.out.println(file2.getName());
System.out.println(file2.getParent());
System.out.println(file2.length());
System.out.println(file2.lastModified());
}
public void test3(){
File file = new File("D:\\javaCode\\cc");
String[] list = file.list();
for(String s : list){
System.out.println(s);
}
System.out.println();
File[] files = file.listFiles();
for(File f : files){
System.out.println(f);
}
}
2.判断
方法 | 描述 |
public boolean isDirectory() | 判断是否是文件目录 |
public boolean isFile() | 判断是否是文件 |
public boolean exists() | 判断是否存在 |
public boolean canRead() | 判断是否可读 |
public boolean canWrite() | 判断是否可写 |
public boolean isHidden() | 判断是否隐藏 |
代码演示:
public void test5(){
File file1 = new File("aa.txt");
file1 = new File("bb.txt");
System.out.println(file1.isDirectory());
System.out.println(file1.isFile());
System.out.println(file1.exists());
System.out.println(file1.canRead());
System.out.println(file1.canWrite());
System.out.println(file1.isHidden());
System.out.println();
File file2 = new File("D:\\cc");
file2 = new File("D:\\dd");
System.out.println(file2.isDirectory());
System.out.println(file2.isFile());
System.out.println(file2.exists());
System.out.println(file2.canRead());
System.out.println(file2.canWrite());
System.out.println(file2.isHidden());
}
3.创建与删除
方法 描述
public boolean createNewFile() 创建文件。若文件存在,则不创建,返回false
public boolean mkdir() 创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
public boolean mkdirs() 创建文件目录。如果上层文件目录不存在,一并创建
方法 | 描述 |
public boolean createNewFile() | 创建文件。若文件存在,则不创建,返回false |
public boolean mkdir() | 创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。 |
public boolean mkdirs() | 创建文件目录。如果上层文件目录不存在,一并创建 |
public boolean delete() | 删除文件或者文件夹 |
代码演示:
public static void main(String[] args) throws IOException {
//声明一个文件
File file=new File("D:\\Code\\javaCode\\File\\aa.txt");
//创建文件(若文件已存在,则返回false,否则返回true)
boolean newFile = file.createNewFile();
System.out.println(newFile);
}
public static void main(String[] args) throws IOException {
//声明一个单级文件夹
File file1=new File("D:\\Code\\javaCode\\File\\bb");
//创建单级文件夹(若文件夹已存在,则返回false,否则返回true)
boolean mkdir = file1.mkdir();
System.out.println(mkdir);
}
public static void main(String[] args) throws IOException {
//声明一个多级文件夹
File file2=new File("D:\\Code\\javaCode\\File\\cc\\aa\\bb\\dd\\ee");
//创建多级文件夹
boolean mkdirs = file2.mkdirs();
System.out.println(mkdirs);
}
Java IO
1.概述
Java IO是即通过Java 执行输入输出操作,它能够让用户们通过input和output来访问不同的数据源和目的地;io分为java.io和java.nio,前者会造成线程的阻塞,而后者不会;
具体类别见下图:
2.四大基流
即:
字节流 | 字符流 | |
输入流 | InputStream | Reader |
输出流 | OutputStream | Writer |
1.InputStream
InputStream 代表一个输入流,它是一个抽象类,不能被实例化。InputStream 定义了一些通用方法,如 read() 和 skip() 等,用于从输入流中读取数据, 包含FileInputStream,PipedInputStream,ByteArrayInputStream等等;下面是一个使用FileInputStream的示例:
import java.io.*;
public class FileInputStreamExample {
public static void main(String[] args) {
// 要读取的文件路径和名称
String filePath = "C:/example/file.txt";
// 创建输入流对象
FileInputStream fis = null;
try {
fis = new FileInputStream(filePath);
byte[] buffer = new byte[1024];
int len;
// 使用 while 循环读取文件,每次最多读取 1024 个字节
while ((len = fis.read(buffer)) != -1) {
// 将读取的字节转换为字符串,并输出到控制台
String content = new String(buffer, 0, len, "UTF-8");
System.out.println(content);
}
} catch (FileNotFoundException e) {
System.out.println("File not found: " + filePath);
} catch (IOException e) {
System.out.println("Error reading file: " + e.getMessage());
} finally {
// 关闭输入流
try {
if (fis != null) {
fis.close();
}
} catch (IOException e) {
System.out.println("Error closing file: " + e.getMessage());
}
}
}
}
2.OutputStream
OutputStream 代表一个输出流,它也是一个抽象类,不能被实例化。OutputStream 定义了一些通用方法,如 write() 和 flush() 等,用于向输出流中写入数据,常用的同样有:FileOutputStream,PipedOutputStream,ByteArrayOutputStream,下面是一个FileOutputStream示例:
import java.io.*;
public class FileOutputStreamExample {
public static void main(String[] args) {
// 要写入的文件路径和名称
String filePath = "C:/example/output.txt";
// 要写入文件的内容
String content = "Hello, World!";
// 创建输出流对象
FileOutputStream fos = null;
try {
fos = new FileOutputStream(filePath);
// 将字符串转换为字节数组,并将其写入文件
fos.write(content.getBytes("UTF-8"));
// 刷新输出流
fos.flush();
// 输出提示信息
System.out.println("Content has been written to " + filePath);
} catch (FileNotFoundException e) {
System.out.println("File not found: " + filePath);
} catch (IOException e) {
System.out.println("Error writing file: " + e.getMessage());
} finally {
// 关闭输出流
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
System.out.println("Error closing file: " + e.getMessage());
}
}
}
}
3.Reader
Reader是Java中一种基本的字符流,按字符读写数据,是基于 InputStream 的转换类,用于完成字节流与字符流之间的转换;
常用的实现类包括 FileReader 和 InputStreamReader等
下面是一个使用FileReader的代码示例:
import java.io.FileReader; // 引入 FileReader 类
import java.io.IOException; // 引入 IOException 类
public class FileReaderExample {
public static void main(String[] args) {
// 定义文件路径
String filePath = "example.txt";
try {
// 创建 FileReader 对象
FileReader fileReader = new FileReader(filePath);
// 读取字符
int character;
while ((character = fileReader.read()) != -1) {
// 打印字符
System.out.print((char) character);
}
// 关闭 FileReader 对象
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
4.Writer
与Reader相同,Writer也是Java中一种基本的字符流,按字符读写数据,是基于OutputStream 的转换类,用于完成字节流与字符流之间的转换;
FileWriter代码示例:
import java.io.*;
public class FileWriterExample {
public static void main(String[] args) {
FileWriter writer = null;
try {
writer = new FileWriter("example.txt");
writer.write("Hello World!");
writer.close();
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
} finally {
try {
if (writer != null)
writer.close();
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
}