I、文件操作
1.1 文件寫(xiě)入
使用write()方法向文件寫(xiě)入內(nèi)容:
package example;
import java.io.*;
public class WriteEmp {
public static void main(String[] args) {
try {
BufferedWriter out = new BufferedWriter(new FileWriter("text.txt"));
out.write("第一次寫(xiě)入");
out.close();
System.out.println("successful!");
} catch (IOException e) {
}
}
}

在工程目錄中可以看到新建的文件,即寫(xiě)入的內(nèi)容:

1.2 讀取文件內(nèi)容
使用readLine()方法來(lái)讀取文件內(nèi)容:
package example;
import java.io.*;
public class ReadLineEmp {
public static void main(String[] args) {
try {
BufferedReader in = new BufferedReader(new FileReader("text.txt"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
//System.out.println(str);
} catch(IOException e) {
}
}
}

1.3 刪除文件
使用delete()方法將文件刪除
package example;
import java.io.*;
public class DeleteEmp {
public static void main(String[] args) {
try {
File file = new File("c:\\test.txt");
if (file.delete()) {
System.out.println(file.getName() + "已被刪除");
}
else {
System.out.println("刪除失敗");
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
1.4 將文件內(nèi)容復(fù)制到另一個(gè)文件
使用BufferedWriter類(lèi)的read和write方法將文件內(nèi)容復(fù)制到另一個(gè)文件:
package example;
import java.io.*;
public class CopyFileEmp {
public static void main(String[] args) throws Exception {
BufferedWriter out1 = new BufferedWriter(new FileWriter("srcfile.txt"));
out1.write("string to be copied");
out1.close();
InputStream in = new FileInputStream(new File("srcfile.txt"));
OutputStream out = new FileOutputStream(new File("destnfile.txt"));
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
BufferedReader in1 = new BufferedReader(new FileReader("destnfile.txt"));
String str;
while ((str = in1.readLine()) != null) {
System.out.println(str);
}
in1.close();
}
}
執(zhí)行代碼后,工程目錄中會(huì)達(dá)到預(yù)計(jì)效果:

1.5 向文件中追加數(shù)據(jù)
使用filewriter方法向文件中追加數(shù)據(jù):
package example;
import java.io.*;
public class Append2FileEmp {
public static void main(String[] args) throws Exception {
try {
BufferedWriter out = new BufferedWriter(new FileWriter("text.txt",true));
out.write("第二次寫(xiě)入\n");
out.close();
BufferedReader in = new BufferedReader(new FileReader("text.txt"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
} catch (IOException e) {
System.out.println("execption occoured" + e);
}
}
}

執(zhí)行完畢后,之前的文件內(nèi)容變?yōu)椋?br>

1.6 創(chuàng)建臨時(shí)文件
使用File類(lèi)的createTempFile(String prefix, String suffix)方法在默認(rèn)臨時(shí)目錄來(lái)創(chuàng)建臨時(shí)文件,參數(shù)prefix為前綴,suffix為后綴。
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
File temp = File.createTempFile("testrunoobtmp", ".txt");
System.out.println("文件路徑: "+temp.getAbsolutePath());
temp.deleteOnExit(); //終止后刪除臨時(shí)文件
BufferedWriter out = new BufferedWriter(new FileWriter(temp));
out.write("aString");
System.out.println("臨時(shí)文件已創(chuàng)建:");
out.close();
}
}
也可以使用createTempFile(String prefix, String suffix, File directory)中的directory來(lái)指定臨時(shí)文件的目錄:
import java.io.File;
public class Main {
public static void main(String[] args) {
File f = null;
try {
// 創(chuàng)建臨時(shí)文件
f = File.createTempFile("tmp", ".txt", new File("C:/"));
// 輸出絕對(duì)路徑
System.out.println("File path: "+f.getAbsolutePath());
// 終止后刪除臨時(shí)文件
f.deleteOnExit();
// 創(chuàng)建臨時(shí)文件
f = File.createTempFile("tmp", null, new File("D:/"));
// 輸出絕對(duì)路徑
System.out.print("File path: "+f.getAbsolutePath());
// 終止后刪除臨時(shí)文件
f.deleteOnExit();
} catch(Exception e) {
// 如果有錯(cuò)誤輸出內(nèi)容
e.printStackTrace();
}
}
}
1.7 獲取文件大小
使用File類(lèi)的file.exists()和file.length()方法來(lái)獲取文件大小,以字節(jié)計(jì)算:
package example;
import java.io.File;
public class FileSizeEmp {
public static void main(String[] args) {
long size = getFileSize("text.txt");
System.out.println("The size is : " + size + "bytes");
}
public static long getFileSize(String filename) {
File file = new File(filename);
if (!file.exists() || !file.isFile()) {
System.out.println("文件不存在");
return -1;
}
return file.length();
}
}

1.8 文件重命名
使用File類(lèi)的oldName.renameTo(newName)方法來(lái)重命名文件:
package example;
import java.io.File;
public class RenameFileEmp {
public static void main(String[] args) {
File oldName = new File("text.txt");
File newName = new File("newtext.txt");
if (oldName.renameTo(newName)) {
System.out.println("successful");
}
else {
System.out.println("Error");
}
}
}

1.9 設(shè)置文件只讀
使用File類(lèi)中的file.setReadOnly()和file.canWrite()方法來(lái)設(shè)置文件只讀:
import java.io.File;
public class Main {
public static void main(String[] args) {
File file = new File("C:/java.txt");
System.out.println(file.setReadOnly());
System.out.println(file.canWrite());
}
}
2.0 在指定目錄中創(chuàng)建文件
使用File類(lèi)file.createTempFile()方法在指定目錄中創(chuàng)建文件,不使用deleteOnExit()對(duì)臨時(shí)文件刪除:
import java.io.File;
public class Main {
public static void main(String[] args) throws Exception {
File file = null;
File dir = new File("C:/");
file = File.createTempFile
("JavaTemp", ".javatemp", dir);
System.out.println(file.getPath());
}
}
II、目錄操作
2.1 使用File類(lèi)的mkdirs()創(chuàng)建目錄
package example;
import java.io.File;
public class MakeDirEmp {
public static void main(String[] args) {
String directories = "D:\\a\\b\\c\\d\\e\\f\\g\\h\\i";
File file = new File(directories);
boolean result = file.mkdirs();
System.out.println("Status = " + result);
}
}

2.2 刪除目錄
使用File類(lèi)的ofdir.isDirectory(),dir.list()和deleteDir()方法一個(gè)一個(gè)刪除目錄:
import java.io.File;
public class Main {
public static void main(String[] argv) throws Exception {
// 刪除當(dāng)前目錄下的 test 目錄
deleteDir(new File("./test"));
}
public static boolean deleteDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir
(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
if(dir.delete()) {
System.out.println("目錄已被刪除!");
return true;
} else {
System.out.println("目錄刪除失??!");
return false;
}
}
}
2.3 判斷目錄是否為空
使用File類(lèi)的file.isDirectory()和file.list方法判斷目錄是否為空:
import java.io.File;
public class Main
{
public static void main(String[] args)
{
File file = new File("./testdir"); // 當(dāng)前目錄下的 testdir目錄
if(file.isDirectory()){
if(file.list().length>0){
System.out.println("目錄不為空!");
}else{
System.out.println("目錄為空!");
}
}else{
System.out.println("這不是一個(gè)目錄!");
}
}
}
2.4 獲取目錄大小
使用File類(lèi)的FileUtils.sizeofDirectory(File Name)來(lái)獲取目錄大?。?/p>
import java.io.File;
import org.apache.commons.io.FileUtils;
public class Main {
public static void main(String[] args) {
long size = FileUtils.sizeOfDirectory(new File("C:/test"));
System.out.println("Size: " + size + " bytes");
}
}
2.5 在指定目錄中查找文件
import java.io.File;
public class Main {
public static void main(String[] argv) throws Exception {
File dir = new File("../java");
String[] children = dir.list();
if (children == null) {
System.out.println("該目錄不存在");
}
else {
for (int i = 0; i < children.length; i++) {
String filename = children[i];
System.out.println(filename);
}
}
}
}
2.6 獲取文件上級(jí)目錄
使用File類(lèi)的file.getParent()方法獲取文件的上級(jí)目錄:
import java.io.File;
public class Main {
public static void main(String[] args) {
File file = new File("C:/File/demo.txt");
String strParentDirectory = file.getParent();
System.out.println("文件的上級(jí)目錄為 : " + strParentDirectory);
}
}
2.7 打印目錄結(jié)構(gòu)
使用File類(lèi)的file.getName()和file.listFiles()方法來(lái)打印目錄結(jié)構(gòu):
import java.io.File;
import java.io.IOException;
public class FileUtil {
public static void main(String[] a)throws IOException{
showDir(1, new File("d:\\Java"));
}
static void showDir(int indent, File file) throws IOException {
for (int i = 0; i < indent; i++)
System.out.print('-');
System.out.println(file.getName());
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++)
showDir(indent + 4, files[i]);
}
}
}
2.8 遍歷指定目錄下的所有目錄
使用File的list方法來(lái)遍歷指定目錄下的所有目錄:
import java.io.*;
class Main {
public static void main(String[] args) {
File dir = new File("F:");
File[] files = dir.listFiles();
FileFilter fileFilter = new FileFilter() {
public boolean accept(File file) {
return file.isDirectory();
}
};
files = dir.listFiles(fileFilter);
System.out.println(files.length);
if (files.length == 0) {
System.out.println("目錄不存在或它不是一個(gè)目錄");
}
else {
for (int i=0; i< files.length; i++) {
File filename = files[i];
System.out.println(filename.toString());
}
}
}
}
2.9 輸出指定目錄下的所有文件
使用File類(lèi)的list方法來(lái)輸出指定目錄下的所有文件:
class Main {
public static void main(String[] args) {
File dir = new File("C:");
String[] children = dir.list();
if (children == null) {
System.out.println( "目錄不存在或它不是一個(gè)目錄");
}
else {
for (int i=0; i< children.length; i++) {
String filename = children[i];
System.out.println(filename);
}
}
}
}
2.10 在指定目錄中查找字母'b'開(kāi)頭的所有文件:
import java.io.*;
class Main {
public static void main(String[] args) {
File dir = new File("C:");
FilenameFilter filter = new FilenameFilter() {
public boolean accept
(File dir, String name) {
return name.startsWith("b");
}
};
String[] children = dir.list(filter);
if (children == null) {
System.out.println("目錄不存在或它不是一個(gè)目錄");
}
else {
for (int i=0; i < children.length; i++) {
String filename = children[i];
System.out.println(filename);
}
}
}
}