在java中所有的事務都是對象,文件也不例外,java中使用File類表示文件(包括文件和文件夾).
首先創建一個File對象f1, 傳入的string參數為文件名,然後使用createNewFile()方法即可創建該文件,文件創建成功createNewFile()方法會返回true,創建失敗會返回false.如果文件已經存在會創建失敗,可用exists() 方法檢測文件是否存在。
package ucas.file.test;
import java.io.File;
import java.io.IOException;
public class FileDemo01 {
public static void main(String[] args) {
File f1 = new File("Test.txt");
try {
if(f1.exists()){
System.out.println("文件已存在無須創建!");
}else{
if (f1.createNewFile()) {
System.out.println("文件創建成功!");
}else{
System.out.println("文件創建失敗!");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件刪除使用delete()方法。
package ucas.file.test;
import java.io.File;
public class FileDeete {
public static void main(String[] args) {
File f1 = new File("Test.txt");
if (f1.exists() == false) {
System.out.println("文件不存在,刪除失敗!");
} else {
if (f1.delete()) {
System.out.println("刪除成功!");
}else{
System.out.println("刪除失敗");
}
}
}
}
在src目錄下存在一個Test.txt文本文件,修改文件名:
package ucas.file.test;
import java.io.File;
public class FileRename {
public static void main(String[] args) {
File f1=new File("src/Test.txt");
File f2=new File("src/TestTwo.txt");
f1.renameTo(f2);
}
}
創建文件夾使用mkdir()方法:
package ucas.file.test;
import java.io.File;
public class FileFolder {
public static void main(String[] args) {
File dir1=new File("src/Folder");
dir1.mkdir();
}
}
這樣就走src目錄下新建了一個Folder文件夾,刷新後可見.
創建文件夾時先判斷是否存在,這樣更加規范:
package ucas.file.test;
import java.io.File;
public class FileFolder {
public static void main(String[] args) {
File dir1=new File("src/Folder");
if(dir1.exists()){
System.out.println("文件夾已存在!");
}else{
if(dir1.mkdir()){
System.out.println("文件夾創建成功");
}else{
System.out.println("文件夾創建失敗");
}
}
}
}
創建含義子文件夾的文件夾使用mkdirs()函數:
File dir1=new File("Folder/one/two");
dir1.mkdirs()
刪除文件夾使用delete()函數,但是對於非空文件夾不能一次性刪除
刪除非空文件夾,可以采用遞歸的思想:
public static void deleteFolder(File dir) {
File dirFile[] = dir.listFiles();
for (int i = 0; i < dirFile.length; i++) {
if (dirFile[i].isDirectory()) {
deleteFolder(dirFile[i]);
}
dirFile[i].delete();
}
}
package ucas.file.demo;
import java.io.File;
public class FileDemo3 {
public static void main(String[] args) {
// 文件屬性的讀取
File file = new File("text.txt");
// 判斷文件是否存在
System.out.println("判斷文件是否存在:" + file.exists());
// 讀取文件名稱
System.out.println("讀取文件名稱:" + file.getName());
// 讀取文件路徑
System.out.println("讀取文件路徑:" + file.getPath());
// 讀取文件絕對路徑
System.out.println("讀取文件絕對路徑:" + file.getAbsolutePath());
// 讀取文件父級路徑
System.out.println("父級文件路徑:" + new File(file.getAbsolutePath()).getParent());
// 讀取文件大小
System.out.println("文件大小:" + (float) file.length() / 1000 + "Kb");
// 文件是否被隱藏
System.out.println("文件是否被隱藏:" + file.isHidden());
// 文件是否可讀
System.out.println("文件是否可讀:" + file.canRead());
// 文件是否可寫
System.out.println("文件是否可寫:" + file.canWrite());
//判斷是否為文件夾
System.out.println("判斷是否為文件夾:"+file.isDirectory());
}
}
文件可讀、可寫、只讀方式設置:
//將文件屬性設置為可寫:
file.setWritable(true);
//將文件屬性設置為可讀:
file.setReadable(true);
//設定文件只讀:
file.setReadOnly();
package ucas.file.demo;
import java.io.File;
public class FileDemo5 {
public static void main(String[] args) {
// 遍歷文件夾
//File dir=new File("/Users/yaopan/Documents");
File dir=new File("../");
printFiles(dir,1);
}
public static void printFiles(File dir,int tab){
if(dir.isDirectory()){
File next[]=dir.listFiles();
for (int i = 0; i < next.length; i++) {
for(int j=0;j
輸出結果:
|--.classpath
|--.DS_Store
|--.project
|--.settings
|--|--org.eclipse.jdt.core.prefs
|--bin
|--|--.DS_Store
|--|--Folder
|--|--|--one
|--|--|--|--two
|--|--TestTwo.txt
|--|--ucas
|--|--|--collection
|--|--|--|--demo
|--|--|--|--|--HashSetDemo.class
|--|--|--|--|--IteratorDemo.class
|--|--|--|--|--ListDemo.class
|--|--|--|--|--MapDemo01.class
|--|--|--|--|--SetDemo.class
|--|--|--|--|--VectorDemo.class
|--|--|--file
|--|--|--|--demo
|--|--|--|--|--FileDemo1.class
|--|--|--|--|--FileDemo2.class
|--|--|--|--|--FileDemo3.class
|--|--|--|--|--FileDemo4.class
|--|--|--|--|--FileDemo5.class
|--|--|--|--|--FileDemo6.class
|--|--|--|--test
|--|--|--|--|--FileDeete.class
|--|--|--|--|--FileDemo01.class
|--|--|--|--|--FileFolder.class
|--|--|--|--|--FileRename.class
|--|--|--xml
|--|--|--|--demo
|--|--|--|--|--XmlDemo1.class
|--My Folder
|--|--two
|--|--|--three
|--src
|--|--.DS_Store
|--|--Folder
|--|--|--1.txt
|--|--|--1副本 2.txt
|--|--|--1副本 3.txt
|--|--|--1副本 4.txt
|--|--|--1副本 5.txt
|--|--|--1副本 6.txt
|--|--|--1副本 7.txt
|--|--|--1副本 8.txt
|--|--|--1副本 9.txt
|--|--|--1副本.txt
|--|--|--one
|--|--TestTwo.txt
|--|--ucas
|--|--|--collection
|--|--|--|--demo
|--|--|--|--|--HashSetDemo.java
|--|--|--|--|--IteratorDemo.java
|--|--|--|--|--ListDemo.java
|--|--|--|--|--MapDemo01.java
|--|--|--|--|--SetDemo.java
|--|--|--|--|--VectorDemo.java
|--|--|--file
|--|--|--|--demo
|--|--|--|--|--FileDemo1.java
|--|--|--|--|--FileDemo2.java
|--|--|--|--|--FileDemo3.java
|--|--|--|--|--FileDemo4.java
|--|--|--|--|--FileDemo5.java
|--|--|--|--|--FileDemo6.java
|--|--|--|--test
|--|--|--|--|--FileDeete.java
|--|--|--|--|--FileDemo01.java
|--|--|--|--|--FileFolder.java
|--|--|--|--|--FileRename.java
|--|--|--xml
|--|--|--|--demo
|--|--|--|--|--XmlDemo1.java
|--tangshi.txt
|--tangshi2.txt
|--Test.txt
|--text.txt
七、文件的簡單讀寫
工程目錄下放一個tangshi.txt,裡面輸入文字,讀取輸出與寫入:
package ucas.file.demo;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
public class FileDemo6 {
public static void main(String[] args) {
// 文件的簡單讀和寫
File file = new File("tangshi.txt");
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader bfr = new BufferedReader(isr);
String line;
while ((line = bfr.readLine()) != null) {
System.out.println(line);
}
bfr.close();
isr.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
File file2 = new File("tangshi2.txt");
try {
FileOutputStream fos = new FileOutputStream(file2);
OutputStreamWriter osq = new OutputStreamWriter(fos);
BufferedWriter bfw = new BufferedWriter(osq);
bfw.write("登鹳雀樓\n");
bfw.write("唐 王之渙\n");
bfw.write("白日依山盡,黃河入海流。\n");
bfw.write("白日依山盡,黃河入海流。\n");
bfw.close();
osq.close();
fos.close();
System.out.println("寫入完成!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}