? ? ? ? 在變量、數(shù)組和對象中存儲的數(shù)據(jù)是暫時存在的,程序結束后它們就會丟失。想要永久地存儲程序創(chuàng)建的數(shù)據(jù),就需要將其保存在磁盤文件中(就是保存在電腦的C盤或D盤中),而只有數(shù)據(jù)存儲起來才可以在其他程序中使用它們。Java的I/O技術可以將數(shù)據(jù)保存到文本文件、二進制文件甚至是ZIP壓縮文件中,以達到永久性保存數(shù)據(jù)的要求。
目錄
一? ?輸入/輸出流
?二 File類
1.文件的創(chuàng)建與刪除?
第一種構造方法
第二種構造方法
第三種構造方法
2.File類的使用
(1)獲取文件信息
(2)文件夾的操作
1.創(chuàng)建單層文件夾
2.創(chuàng)建多層文件夾
3.刪除文件夾?
?編輯4. 獲取文件夾下的所有子文件
?
一? ?輸入/輸出流
??????????????????流是一組有序的數(shù)據(jù)序列,根據(jù)操作的類型,可分為輸入流和輸出流兩種。I/O(Input/Output,輸入/輸出)流提供了一條通道程序,可以使用這條通道把源中的字節(jié)序列送到目的地。雖然IO流通常與磁盤文件存取有關,但是程序的源和目的地也可以是鍵盤、鼠標、內(nèi)存或顯示器窗口等。
Java有數(shù)據(jù)流處理輸入/輸出模式,程序從指向源的輸入流中讀取源中的數(shù)據(jù),如圖所示。源可以是文件、網(wǎng)絡、壓縮包或其他數(shù)據(jù)源。
?Java語言定義了許多類專門負責各種方式的輸入/輸出,這些類都被放在java.io包中。其中,所有
輸入流類都是抽象類InputStream(字節(jié)輸入流)或抽象類Reader(字符輸入流)的子類;而所有輸出
流都是抽象類OutputStream(字節(jié)輸出流)或抽象類Writer(字符輸出流)的子類。
?二 File類
File?類是java.io包中唯一代表磁盤文件本身的類。File類定義了一些與平臺無關的方法來操作文件,可以通過調(diào)用File類中的方法,實現(xiàn)創(chuàng)建、刪除、重命名文件等操作。File類的對象主要用來獲取文件本身的一些信息,如文件所在的目錄、文件的長度、文件讀寫權限等。數(shù)據(jù)流可以將數(shù)據(jù)寫入文件中,文件也是數(shù)據(jù)流最常用的數(shù)據(jù)媒體。
1.文件的創(chuàng)建與刪除?
第一種構造方法
:File(String pathname)
該構造方法通過將給定的路徑名字符串轉(zhuǎn)換為抽象路徑名來創(chuàng)建一個新File實列。
file創(chuàng)建中的抽象路徑的三種表示方法?,如圖1,2,3;
圖一:??在MyProject下創(chuàng)建一個word.txt。此時word.txt不在src的包里面。
圖二:?word.txt與Dome在同一個包中?
圖三:?
那么我們來看一下決定路徑下如何創(chuàng)建文件:
?1.首先,我們在c盤里面創(chuàng)建一個文件夾,名字為text;
2.然后?,在text文件夾中創(chuàng)建一個文本,文本名為word.txt;
3.查看絕對路徑,這里我們可以右鍵看屬性,也可以直接雙擊上面的標題;
第二種構造方法
:File(String parent,String chid)
該構造方法根據(jù)定義的父路徑和子路徑字符串(包含文件名)創(chuàng)建一個新的File對象。語法如下:
new?File(String?parent,String?child)
?parent:父路徑字符串,如D:/或D:/doc。
也就是說他它所在的位置信息。
?child:子路徑字符串,如letter.txt。文檔,項目的名字。
第三種構造方法
:File(File?f,?String?child)
該構造方法根據(jù)f抽象路徑名和child路徑名字符串創(chuàng)建一個新File實例。語法如下:
new?File(File?f,String?child)
?f:父路徑對象,如D:/doc/。
?child:子路徑字符串,如letter.txt。
?【源碼】
package my;
import java.io.File;
public class Demo {
public static void main(String[] args) {
/*
* 項目下的路徑(默認路徑):word.txt
* 包中的文件路徑:src/my/word.txt
* 注意: 可以用/表示文件夾
* 可以用\\表示文件夾(轉(zhuǎn)義字符)
* 絕對路徑:C:\\text\\word.txt
*/
File f1 = new File("C:\\text\\word.txt");//第一種構造方法
File f2 = new File("C:\\text\\","word.txt");//第二種構造方法
/*
* parent:C:\\text\\(文件在c盤的文件夾text中)
* child:word.txt(它的文檔名字是word.txt)
*/
File dir = new File("C:\\text\\");//文件夾
File f3 = new File(dir,"word.txt");//第三種構造方法
/*
* 也可以用下面的式子表示
* File f3 = new File(new File("C:\\text\\"),"word.txt");
*/
System.out.println(f1.getAbsolutePath());
System.out.println(f2.getAbsolutePath());
System.out.println(f3.getAbsolutePath());
System.out.println(f1==f2);
/*
* f1和f2不相等是因為它們是通過不同的構造方法創(chuàng)建的對象。
* 盡管它們的路徑和文件名都相同,但它們是兩個不同的對象。
* 比較兩個對象時,需要使用.equals()方法而不是==運算符。
* 所以應該使用f1.equals(f2)來比較它們是否相等。
* 他們只是一個代表,好比a與b是朋友,c也與b是朋友,而a與c并不一定是朋友。
*/
System.out.println(f1.equals(f2));
}
}
2.File類的使用
(1)獲取文件信息
File類提供了很多方法用來獲取文件本身信息。如表:
【代碼】?
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
File f1 = new File("C:\\text\\word.txt");
System.out.println("文件是否存在:"+f1.exists());
System.out.println("文件名:"+f1.getName());
System.out.println("文件的絕對路徑:"+f1.getAbsolutePath());
System.out.println("文件是否隱藏:"+f1.isHidden());
System.out.println("文件大小:"+f1.length());
Date date = new Date(f1.lastModified());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
System.out.println("文件最后的修改時間:"+sdf.format(date));
boolean f = f1.delete();
System.out.println("文件是否刪除成功:"+f);
try {
boolean fl = f1.createNewFile();
System.out.println("創(chuàng)建文件是否成功:"+fl);
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
}
【運行結果】?
?運行完后我們會發(fā)現(xiàn)word文件大小變?yōu)?了,這是因為我們刪除了,又重新創(chuàng)建的原因。
(2)文件夾的操作
1.創(chuàng)建單層文件夾
創(chuàng)建單層文件夾用mkdir()或mkdirs()方法。
package mt;
import java.io.File;
public class Demo {
public static void main(String[] args) {
File dir = new File("dir");
boolean flag = dir.mkdir();//創(chuàng)建文件夾
System.out.println("創(chuàng)建文件夾是否成功:"+flag);
}
}
創(chuàng)建前我們可以看到左側沒有dir文件:?
運行刷新后:
我們可以發(fā)現(xiàn)左側出現(xiàn)了dir文件夾的圖標。?
2.創(chuàng)建多層文件夾
創(chuàng)建多層文件夾我們要用mkdirs()方法;
【代碼】?
package mt;
import java.io.File;
public class Demo {
public static void main(String[] args) {
File dir = new File("dir/dir2/dir3/dir4/");
boolean flag = dir.mkdir();//創(chuàng)建文件夾
boolean flag2 = dir.mkdirs();//創(chuàng)建文件夾及其父文件夾
System.out.println("創(chuàng)建文件夾是否成功:"+flag);
System.out.println("創(chuàng)建多層文件夾是否成功:"+flag2);
}
}
【運行結果】?
3.刪除文件夾?
刪除文件夾用delete()方法,默認刪除最后一個文件夾。
【代碼】?
package mt;
import java.io.File;
public class Demo {
public static void main(String[] args) {
File dir = new File("dir/dir2/dir3/dir4/");
boolean flag = dir.mkdir();//創(chuàng)建文件夾
boolean flag2 = dir.mkdirs();//創(chuàng)建文件夾及其父文件夾
System.out.println("創(chuàng)建文件夾是否成功:"+flag);
System.out.println("創(chuàng)建多層文件夾是否成功:"+flag2);
boolean de1 = dir.delete();
System.out.println("刪除文件夾是否成功:"+de1);
}
}
【運行結果】?
4. 獲取文件夾下的所有子文件
?【代碼】
package mt;
import java.io.File;
public class Demo {
public static void main(String[] args) {
File f = new File("C:\\windows\\");
File files[] = f.listFiles();
for(File tmp:files) {
if(tmp.isFile()) {
System.out.println("文件:"+tmp.getName());
}else if(tmp.isDirectory()){
System.out.println("文件夾:"+tmp.getName());
}
}
}
}
【運行結果】?文章來源:http://www.zghlxwxcb.cn/news/detail-690947.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-690947.html
到了這里,關于Java學習筆記之----I/O(輸入/輸出)一的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!