I/O类结构
创建文件夹
public static void creatFolder(String folderPath) {
File file = new File(folderPath);
file.mkdirs();
//注意mkdirs()和file.mkdir()的区别:
}
mkdirs()和mkdir()的区别:
如果是mkdir(),那么传入的路径folderPath的每一个文件夹都是必须存在的。(比如我们传入D:\IdeaProjects\test,我们的目的是创建一个test的文件夹,如果IdeaProjects这个文件夹不存在,那么test这个文件夹也不会被创建)。但是如果是mkdirs(),我们还是传入D:\IdeaProjects\test,目的是创建test文件夹,如果IdeaProjects这个文件夹不存在的话,程序会帮我们创建,然后在这个文件夹的下面创建test文件夹。
创建文件
public static boolean createFile(String fileName) {
File file = new File(fileName);
boolean isSuccess = false;
try {
isSuccess = file.createNewFile();
} catch(IOException e) {
e.printStackTrace;
}
return isSuccess;
}
创建文件夹的时候,我们也用到了File这个类。这里要注意的是,我们调用createNewFile()这个方法的时候(该方法的返回类型是布尔型),可能会出现异常(比如:要新建的文件名和已经存在的文件名重名),所以我们要在这里加上IO异常处理(try,catch语句)。另外,这里涉及到了绝对路径和相对路径。如果我们传入的是绝对路径(比如D:\IdeaProjects\test,那么没什么问题,会在我们指定的路径下创建test文件),但是如果我们传入的是相对路径(比如test),那么test这个文件就会新建在你当前java文件所在的工程的目录下。
在文件内写入内容
public static void writeToFile(String fileName) {
File file = new File(fileName);
BufferedWriter bufferedWriter = null;
try {
FileWriter writer = new FileWriter(file);
bufferedWriter = new BufferedWriter(writer);
bufferedWriter.write("你好");
bufferedWriter.newLine;
bufferedWriter.write("nihao");
bufferedWriter.newLine;
bufferedWriter.write("hello");
}catch(IOException e) {
e.printStackTrace();
}finally {
if (bufferedWriter != null) {
try {
bufferedWriter.close();
}catch(IOExcption e) {
e.printStackTrace();
}
}
}
}
File、FileWriter、BufferedWriter:File类的话其实是一个一个字节传,然后用FileWriter类包装一下,变成一个一个字符传,然后再用BufferedWriter类包装一下,变成一块一块传(可以理解为多字符(或者说字符串)传)。这样子提高了IO流的传输速率。毕竟IO传输速率对整个程序的优化至关重要。
列出目录下的所有文件(包括文件夹和文件)
public static void listFiles(String folderPath) {
File file = new File(folderPath);
for (String fileName : file.list()) {
System.out.println(fileName);
}
}
读取文件内容
public static void readFromFile(String fileName) {
File file = new File(fileName);
BufferedReader bufferedReader = null;
try {
FileReader fileReader = new FileReader(file);
bufferedReader = new BufferedReader(fileReader);
String line = bufferedReader.readline();
while (line != null) {
System.out.println(line);
line = bufferedReader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
}
删除文件
public static void deleteFile(String fileName) {
File file = new File(fileName);
file.delete();
}
拷贝文件
public static void copyFile(String originFile, String newFile) {
File file1 = new File(originFile);
File file2 = new File(newFile);
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
FileReader fileReader = new FileReader(file1);
FileWriter fileWriter = new FileWriter(file2);
bufferedReader = new BufferedReader(fileReader);
bufferedWriter = new BufferedWriter(fileWriter);
String line = bufferedReader.readline();
if (line != null) {
bufferedWriter.write(line);
line = bufferedReader.readLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedReader != null) {
bufferedReader.close();
}
if (bufferedWriter != null) {
bufferedWriter.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}