Java?File類提供的方法與操作
File類
File類事java.io包中唯一代表磁盤文件本身的對象。File類定義了一些與平臺無關(guān)的方法來操作文件,可以通過調(diào)用File類中的方法,實現(xiàn)創(chuàng)建、刪除、重命名文件等操作。File類的對象主要用來獲取文件本身的一些信息,如文件所在的目錄、文件的長度、文件讀寫權(quán)限等。數(shù)據(jù)流可以將數(shù)據(jù)寫入到文件中,文件也是數(shù)據(jù)流最常用的數(shù)據(jù)媒體。
1.文件的創(chuàng)建與刪除
可以使用File類創(chuàng)建一個文件對象。通常使用以下三種方法來創(chuàng)建文件對象。
(1)File(String pathname)
該構(gòu)造方法通過將給定路徑名字字符串轉(zhuǎn)換為抽象路徑名來創(chuàng)建一個新的File實例。例如:
File file = new File("d:/1.txt");
2.File類提供的方法
File類提供了很多方法以獲取文件本身的信息,常用的方法如下:
方法 | 返回值 | 說明 |
---|---|---|
getName() | String | 獲取文件的名稱 |
canRead() | boolean | 判斷文件是否為可讀的 |
canWrite() | boolean | 判斷文件是否可被寫入 |
exists() | boolean | 判斷文件是否存在 |
delete() | void | 刪除文件 |
length() | long | 獲取文件的長度(以字節(jié)為單位) |
getAbsolutePath() | String | 獲取文件的絕對路徑 |
getParent() | String | 獲取文件的父路徑 |
isFile() | boolean | 獲取文件的名稱 |
isDirectory() | boolean | 判斷文件是否為一個目錄 |
isHidden() | boolean | 判斷文件是否為隱藏文件 |
lastModified() | long | 獲取文件最后修改時間 |
3.文件輸入/輸出流
程序運行期間,大部分?jǐn)?shù)據(jù)都在內(nèi)存中進(jìn)行操作,當(dāng)程序結(jié)束或關(guān)閉時,這些數(shù)據(jù)將消失。如果需要將數(shù)據(jù)永久保存,可以使用文件輸入/輸出流與指定文件建立連接,將需要的數(shù)據(jù)永久保存到文件中。
FileInputStream 與 FileOutputStream類
FileInputStream類與FileOutputStream類都用來操作磁盤文件。
FileInputStream類常用的構(gòu)造方法如下:
- FileInputStream(String name)
- FileInputStream(File file)
第一個構(gòu)造方法使用給定的文件名name創(chuàng)建一個FileInputStream對象,第二個構(gòu)造方法使用File對象創(chuàng)建FileInputStream對象。第一個構(gòu)造方法比較簡單,但第二個構(gòu)造方法允許在把文件鏈接輸入流之前對文件作進(jìn)一步分析。
FileOutputStream類有與FileInputStream類相同的參數(shù)構(gòu)造方法,創(chuàng)建一個FileOutputStream對象時,可以指定不存在的文件名,但此文件不能是一個已被其他程序打開的文件。例如:
public class FileTest{ public static void main(String[]args){ File file = new File("world.txt"); try{ FileOutputStream out = new FileOutputStream(file); byte buy[] = "我有一頭小毛驢,我從來也不騎。".getBytes(); out.write(buy); out.close(); } catch(Exception e) { e.printStackTrace(); } try{ //創(chuàng)建FileInputStream類對象 FileInputStream in = new FileInputStream(file); byte byt[] = new byte[1024]; //創(chuàng)建byte數(shù)組 int len = in.read(byt); //從文件中讀取信息 System.out.println("文件中的信息是:" + new String(byt, 0, len)) in.close(); } catch(Exception e) { e.printStackTrace(); } } }
4.FileReader和FileWriter類
使用FileOutputStream類向文件中寫入數(shù)據(jù)與使用FileInputStream類從文件中將內(nèi)容讀出來,都存在一點不足,即這兩個類都只提供了對字節(jié)或字節(jié)數(shù)組的讀取方法。由于漢字在文件中占用兩個字節(jié),如果使用字節(jié)流,讀取不好可能會出現(xiàn)亂碼的現(xiàn)象,此時采用字符流Reader或Writer類即可避免這種現(xiàn)象。
FileReader流順序地讀取文件,只要不關(guān)閉流,每次調(diào)用read()方法就順序地讀取源中其余的內(nèi)容,直到源的末尾或流被關(guān)閉。
本實例創(chuàng)建Swing窗體,單機(jī)“寫入文件”按鈕將實現(xiàn)文本框中的數(shù)據(jù)寫入磁盤文件中,單機(jī)“讀取文件”按鈕,系統(tǒng)將磁盤文件中的信息顯示在文本框里。
public class Ftest extends JFrame{ private static final long serialVersionUID = 1L; private JPanel jContentPane = null; //創(chuàng)建面板對象 private JTextArea jTextArea = null; //創(chuàng)建文本域?qū)ο? private JPanel controlPanel = null; //創(chuàng)建面板對象 private JButton openButton = null; //創(chuàng)建按鈕對象 private JButton closeButton = null; //創(chuàng)建按鈕對象 private JButton getOpenButton(){ if(openButton == null){ openButton = new JButton(); openButton.setText("寫入文件"); //修改按鈕的提示信息 openButton.addActionListener(new ActionListener(){ //按鈕的單機(jī)事件 public void actionPerformed(ActionEvent e){ File file = new File("world.txt"); //創(chuàng)建文件對象 try{ FileWriter out = new FileWriter(file); //創(chuàng)建FileWriter對象 String s = jTextArea.getText(); //獲取文本域中文本 out.write(s); //將信息寫入磁盤文件 out.close(); //將流關(guān)閉 catch(Exception e1){ e1.printStackTrace(); } } }); } return openButton; } private JButton getCloseButton(){ if(closeButton == null){ closeButton = new JButton(); closeButton.setText("讀取文件"); //修改按鈕的提示信息 closeButton.addActionListener(new ActionListener(){ //按鈕的單擊事件 public void actionPerformed(ActionEvent e){ File file = new File("world.txt"); //創(chuàng)建文件對象 try{ FileReader in = new FileReader(file); //創(chuàng)建FileReader對象 char byt[] = new char[1024]; //創(chuàng)建char型數(shù)組 int len = in.read(byt); //將字節(jié)讀入數(shù)組 jTextArea.setText(new String(byt, 0, len)); //設(shè)置文本域的顯示信息 in.close(); //關(guān)閉流 }catch(Exception e1){ e1.printStackTrace(); } } }); } return closeButton; } public Ftest(){ super(); initialize(); } private void initilize(){ this.setSize(300,200); this.setContentPane(getJContentPane()); this.setTitle("JFrame"); } private JPanel getJContentPane(){ if(jContentPane == null){ jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); jContentPane.add(getJTextArea(), BorderLayout.CENTER); jContentPane.add(getControlPanel(),BorderLayout.SOUTH); } return jContentPane; } public static void main(String[] args){ //主方法 Ftest thisClass = new Ftest(); //創(chuàng)建本類對象 thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); thisClass.setVisible(true); //設(shè)置該窗體的顯示狀態(tài) } }
到此這篇關(guān)于Java File類提供的方法與操作的文章就介紹到這了,更多相關(guān)Java File類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java線程之join_動力節(jié)點Java學(xué)院整理
join() 定義在Thread.java中,下文通過源碼分享join(),需要的朋友參考下吧2017-05-05Java中Map接口使用以及有關(guān)集合的面試知識點匯總
在java面試過程中,Map時常會被作為一個面試點來問,下面這篇文章主要給大家介紹了關(guān)于Java中Map接口使用以及有關(guān)集合的面試知識點匯總的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07Spring Boot 項目做性能監(jiān)控的操作流程
這篇文章主要介紹了Spring Boot 項目如何做性能監(jiān)控,本文通過實例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Java中使用@CrossOrigin和Proxy解決跨域問題詳解
這篇文章主要介紹了Java中使用@CrossOrigin和Proxy解決跨域問題詳解,在Web開發(fā)中,如果前端頁面和后端接口不在同一個域名下,就會發(fā)生跨域請求的問題,同源策略是瀏覽器的一種安全策略,它限制了來自不同源的客戶端腳本在瀏覽器中運行時的交互,需要的朋友可以參考下2023-12-12關(guān)于Java應(yīng)用日志與Jaeger的trace關(guān)聯(lián)的問題
這篇文章主要介紹了Java應(yīng)用日志如何與Jaeger的trace關(guān)聯(lián),通過jaeger發(fā)現(xiàn)這十次請求中有一次耗時特別長,想定位一下具體原因,感興趣的朋友跟隨小編一起看看吧2022-01-01關(guān)于Filter中獲取請求體body后再次讀取的問題
這篇文章主要介紹了關(guān)于Filter中獲取請求體body后再次讀取的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03Java Web學(xué)習(xí)之MySQL在項目中的使用方法
mysql數(shù)據(jù)庫是我們在日常開發(fā)中經(jīng)常會用到的,下面這篇文章主要給大家介紹了關(guān)于Java Web學(xué)習(xí)之MySQL在項目中的使用方法,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04