欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文帶你詳細認(rèn)識文件與Java中操作文件

 更新時間:2024年05月16日 08:32:54   作者:遇事問春風(fēng)乄  
文件處理是任何應(yīng)用程序的重要部分,Java 提供了許多用于創(chuàng)建、讀取、更新和刪除文件的方法,這篇文章主要給大家介紹了關(guān)于認(rèn)識文件與Java中操作文件的相關(guān)資料,需要的朋友可以參考下

認(rèn)識文件

我們先來認(rèn)識狹義上的文件(file)。針對硬盤這種持久化存儲的I/O設(shè)備,當(dāng)我們想要進行數(shù)據(jù)保存時,往往不是保存成一個整體,而是獨立成一個個的單位進行保存,這個獨立的單位就被抽象成文件的概念,就類似辦公桌上的一份份真實的文件一般。

文件除了有數(shù)據(jù)內(nèi)容之外,還有一部分信息,例如文件名、文件類型、文件大小等并不作為文件的數(shù)據(jù)而存在,我們把這部分信息可以視為文件的元信息

樹型結(jié)構(gòu)組織和目錄

同時,隨著文件越來越多,對文件的系統(tǒng)管理也被提上了日程,如何進行文件的組織呢,一種合乎自然的想法出現(xiàn)了,就是按照層級結(jié)構(gòu)進行組織 —— 也就是我們數(shù)據(jù)結(jié)構(gòu)中學(xué)習(xí)過的樹形結(jié)構(gòu)。這樣,一種專門用來存放管理信息的特殊文件誕生了,也就是我們平時所謂文件夾(folder)或者目錄(directory)的概念。

文件路徑(Path)

如何在文件系統(tǒng)中如何定位我們的一個唯一的文件就成為當(dāng)前要解決的問題,但這難不倒計算機科學(xué)家,因為從樹型結(jié)構(gòu)的角度來看,樹中的每個結(jié)點都可以被一條從根開始,一直到達的結(jié)點的路徑所描述,而這種描述方式就被稱為文件的絕對路徑(absolute path)

除了可以從根開始進行路徑的描述,我們可以從任意結(jié)點出發(fā),進行路徑的描述,而這種描述方式就被
稱為相對路徑(relative path),相對于當(dāng)前所在結(jié)點的一條路徑

知識擴展

即使是普通文件,根據(jù)其保存數(shù)據(jù)的不同,也經(jīng)常被分為不同的類型,我們一般簡單的劃分為文本文件和二進制文件,分別指代保存被字符集編碼的文本和按照標(biāo)準(zhǔn)格式保存的非被字符集編碼過的文件。

Windows 操作系統(tǒng)上,會按照文件名中的后綴來確定文件類型以及該類型文件的默認(rèn)打開程序。但這個習(xí)俗并不是通用的,在 OSX、Unix、Linux 等操作系統(tǒng)上,就沒有這樣的習(xí)慣,一般不對文件類型做如此精確地分類。

文件由于被操作系統(tǒng)進行了管理,所以根據(jù)不同的用戶,會賦予用戶不同的對待該文件的權(quán)限,一般地可以認(rèn)為有可讀、可寫、可執(zhí)行權(quán)限

Windows 操作系統(tǒng)上,還有一類文件比較特殊,就是平時我們看到的快捷方式(shortcut),這種文件只是對真實文件的一種引用而已。其他操作系統(tǒng)上也有類似的概念,例如,軟鏈接(soft link)等

最后,很多操作系統(tǒng)為了實現(xiàn)接口的統(tǒng)一性,將所有的 I/O 設(shè)備都抽象成了文件的概念,使用這一理念,最為知名的就是 Unix、Linux 操作系統(tǒng) —— 萬物皆文件

Java 中操作文件

Java 中通過 java.io.File 類來對一個文件(包括目錄)進行抽象的描述。

值得注意的是,有 File 對象,并不代表真實存在該文件

File 概述

我們先來看看 File 類中的常見屬性、構(gòu)造方法和方法

屬性

修飾符及類型屬性說明
static StringpathSeparator依賴于系統(tǒng)的路徑分隔符,String 類型的表示
static charpathSeparator依賴于系統(tǒng)的路徑分隔符,char 類型的表示

構(gòu)造方法

簽名說明
File(File parent, Stringchild)根據(jù)父目錄 + 孩子文件路徑,創(chuàng)建一個新的 File 實例
File(String pathname)根據(jù)文件路徑創(chuàng)建一個新的 File 實例,路徑可以是絕對路徑或者相對路徑
File(String parent, Stringchild)根據(jù)父目錄 + 孩子文件路徑,創(chuàng)建一個新的 File 實例,父目錄用路徑表示

方法

修飾符及返回值類型方法簽名說明
StringgetParent()返回 File 對象的父目錄文件路徑
StringgetName()返回 FIle 對象的純文件名稱
StringgetPath()返回 File 對象的文件路徑
StringgetAbsolutePath()返回 File 對象的絕對路徑
StringgetCanonicalPath()返回 File 對象的修飾過的絕對路徑
booleanexists()判斷 File 對象描述的文件是否真實存在
booleanisDirectory()判斷 File 對象代表的文件是否是一個目錄
booleanisFile()判斷 File 對象代表的文件是否是一個普通文件
booleancreateNewFile()根據(jù) File 對象,自動創(chuàng)建一個空文件。成功創(chuàng)建后返回 true
booleandelete()根據(jù) File 對象,刪除該文件。成功刪除后返回 true
voiddeleteOnExit()根據(jù) File 對象,標(biāo)注文件將被刪除,刪除動作會到JVM 運行結(jié)束時才會進行
String[]list()返回 File 對象代表的目錄下的所有文件名
File[]listFiles()返回 File 對象代表的目錄下的所有文件,以 File 對象表示
booleanmkdir()創(chuàng)建 File 對象代表的目錄
booleanmkdirs()創(chuàng)建 File 對象代表的目錄,如果必要,會創(chuàng)建中間目錄
booleanrenameTo(Filedest)進行文件改名,也可以視為我們平時的剪切、粘貼操作
booleancanRead()判斷用戶是否對文件有可讀權(quán)限
booleancanWrite()判斷用戶是否對文件有可寫權(quán)限

File使用實例代碼演示

實例一

觀察get系列的特點和差異

代碼如下:

import java.io.File;
import java.io.IOException;

public class IODemo1 {
    public static void main(String[] args) throws IOException {
        File file = new File("./遇事問春風(fēng)乄.txt");
        System.out.println(file.getName());
        System.out.println(file.getParent());
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println(file.getCanonicalPath());
    }
}

注意:有 File 對象,并不代表真實存在該文件

也就是說這里的遇事問春風(fēng)乄可能根本不存在

運行結(jié)果如下:

實例二

普通文件的創(chuàng)建、刪除

代碼如下:

import java.io.File;
import java.io.IOException;

public class IOdemo2 {
    public static void main(String[] args) throws IOException {
        File file = new File("./遇事問春風(fēng)乄.txt"); // 要求該文件不存在,才能看到相同的現(xiàn)象
        //文件是否存在
        System.out.println(file.exists());
        //是否是文件目錄
        System.out.println(file.isDirectory());
        //是否為普通文件
        System.out.println(file.isFile());
        //創(chuàng)建該文件
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        //如果有重復(fù),則不會創(chuàng)建。返回false
        System.out.println(file.createNewFile());
    }
}

結(jié)果如下:

如果你跟博主一樣是使用IDEA編譯器的話,還可以看到該文件路徑下已經(jīng)產(chǎn)生了該文件

實例三

普通文件的刪除

代碼如下:

import java.io.File;
import java.io.IOException;

public class IODemo3 {
    public static void main(String[] args) throws IOException {
        File file = new File("./遇事問春風(fēng)乄.txt"); // 要求該文件不存在,才能看到相同的現(xiàn)象
        System.out.println(file.exists());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        System.out.println(file.delete());
        System.out.println(file.exists());
    }
}

結(jié)果展示:

實例四

觀察 deleteOnExit 的現(xiàn)象

我們先來觀察以下代碼,沒有加deleteOnExit

import java.io.File;
import java.io.IOException;

public class IODemo4 {
    public static void main(String[] args) throws IOException {
        File file = new File("./遇事問春風(fēng)乄.txt"); // 要求該文件不存在,才能看到相同的現(xiàn)象
        System.out.println(file.exists());
        System.out.println(file.createNewFile());
        System.out.println(file.exists());
        //file.deleteOnExit();
        System.out.println(file.exists());
    }
}

結(jié)果如下:

注意這時候我們是可以看到我們創(chuàng)建了該文件的

當(dāng)我們加上deleteOnExit后再來看看運行結(jié)果

但是呢,當(dāng)程序運行結(jié)束后卻觀察不到該路徑下的該文件。

這就是deleteOnExit方法的效果

實例五

觀察目錄的創(chuàng)建

import java.io.File;

public class IODemo5 {
    public static void main(String[] args) {
        File dir = new File("IO-dir"); // 要求該目錄不存在,才能看到相同的現(xiàn)象
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdir());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
    }
}

結(jié)果如下:

實例六

觀察目錄創(chuàng)建2——mkdirs

import javax.swing.*;
import java.io.File;

public class IODemo5 {
    public static void main(String[] args) {
        File dir = new File("./IO-dir/aa/bb"); // 要求所有目錄不存在,才能看到相同的現(xiàn)象
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdir());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
    }
}

運行結(jié)果如下:

mkdir() 的時候,如果中間目錄不存在,則無法創(chuàng)建成功; mkdirs() 可以解決這個問題。

import javax.swing.*;
import java.io.File;

public class IODemo5 {
    public static void main(String[] args) {
        File dir = new File("./IO-dir/aa/bb"); // 要求所有目錄不存在,才能看到相同的現(xiàn)象
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
        System.out.println(dir.mkdirs());
        System.out.println(dir.isDirectory());
        System.out.println(dir.isFile());
    }
}

結(jié)果展示:

實例七

觀察文件重命名

首先創(chuàng)建一個文件如下:

文件重命名如下:

總結(jié)

到此這篇關(guān)于認(rèn)識文件與Java中操作文件的文章就介紹到這了,更多相關(guān)Java操作文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文掌握Spring Cookie和Session 是什么及區(qū)別介紹

    一文掌握Spring Cookie和Session 是什么及區(qū)別介紹

    Cookie和Session都是用于在客戶端和服務(wù)器之間傳遞信息的技術(shù),但它們的工作方式和使用場景有所不同,Cookie是在客戶端保存用戶信息的一種機制,而Session是在服務(wù)器端保存用戶信息的一種機制,本文介紹Spring Cookie和Session 是什么,感興趣的朋友一起看看吧
    2025-01-01
  • Java自旋鎖及自旋的好處詳解

    Java自旋鎖及自旋的好處詳解

    這篇文章主要介紹了Java自旋鎖及自旋的好處詳解,自旋就是自己在這里不停地循環(huán),直到目標(biāo)達成,而不像普通的鎖那樣,如果獲取不到鎖就進入阻塞,需要的朋友可以參考下
    2023-10-10
  • 解決SpringBoot運行Test時報錯:SpringBoot Unable to find

    解決SpringBoot運行Test時報錯:SpringBoot Unable to find

    這篇文章主要介紹了SpringBoot運行Test時報錯:SpringBoot Unable to find a @SpringBootConfiguration,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java——多線程基礎(chǔ)

    java——多線程基礎(chǔ)

    Java多線程實現(xiàn)方式有兩種,第一種是繼承Thread類,第二種是實現(xiàn)Runnable接口,兩種有很多差異,下面跟著本文一起學(xué)習(xí)吧,希望能給你帶來幫助
    2021-07-07
  • SpringMvc+POI處理excel表數(shù)據(jù)導(dǎo)入

    SpringMvc+POI處理excel表數(shù)據(jù)導(dǎo)入

    這篇文章主要為大家詳細介紹了SpringMvc+POI處理excel表數(shù)據(jù)導(dǎo)入,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 解決idea中maven項目無端顯示404錯誤的方法

    解決idea中maven項目無端顯示404錯誤的方法

    這篇文章主要介紹了解決idea中maven項目無端顯示404錯誤的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹的實現(xiàn)方法和原理詳解

    Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹的實現(xiàn)方法和原理詳解

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹的實現(xiàn)方法和原理,紅黑樹是一種特殊的二叉查找樹,每個結(jié)點都要儲存位表示結(jié)點的顏色,或紅或黑,本文將通過示例為大家詳細講講紅黑樹的原理及實現(xiàn),感興趣的朋友可以了解一下
    2024-02-02
  • java調(diào)用短信貓發(fā)短信示例

    java調(diào)用短信貓發(fā)短信示例

    這篇文章主要介紹了java調(diào)用短信貓發(fā)短信示例,需要的朋友可以參考下
    2014-04-04
  • 淺談Apache Maven ToolChains的使用

    淺談Apache Maven ToolChains的使用

    Maven是java中非常有用和常用的構(gòu)建工具,基本上現(xiàn)在大型的java項目都是Maven和gradle的天下了。本文將介紹Apache Maven ToolChains的使用。
    2021-06-06
  • Java使用Hutool執(zhí)行日期的加法和減法操作方法

    Java使用Hutool執(zhí)行日期的加法和減法操作方法

    使用Hutool進行日期的加法和減法操作,可以使用`DateUtil.offsetXXX()`方法來實現(xiàn),這些方法會返回一個新的日期,而不是在原日期上進行修改,本文給大家介紹Java使用Hutool執(zhí)行日期的加法和減法操作方法,感興趣的朋友一起看看吧
    2023-11-11

最新評論