最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你詳細(xì)認(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)文章

  • 華為技術(shù)專家講解JVM內(nèi)存模型(收藏)

    華為技術(shù)專家講解JVM內(nèi)存模型(收藏)

    這篇文章主要介紹了華為技術(shù)專家講解JVM內(nèi)存模型(收藏)的相關(guān)知識,本文給大家介紹的非常詳細(xì),具有一定的收藏借鑒價值,需要的朋友可以參考下
    2021-05-05
  • SpringCloud融入Python的實現(xiàn)

    SpringCloud融入Python的實現(xiàn)

    這篇文章主要介紹了SpringCloud融入Python的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 你真的知道Java中對象的銷毀嗎

    你真的知道Java中對象的銷毀嗎

    java自帶垃圾回收機制,會自動識別內(nèi)存中不再會被使用的對象并將其銷毀,釋放內(nèi)存,下面這篇文章主要介紹了Java中對象銷毀的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Java多線程 BlockingQueue實現(xiàn)生產(chǎn)者消費者模型詳解

    Java多線程 BlockingQueue實現(xiàn)生產(chǎn)者消費者模型詳解

    這篇文章主要介紹了Java多線程 BlockingQueue實現(xiàn)生產(chǎn)者消費者模型詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • java實現(xiàn)多人聊天系統(tǒng)

    java實現(xiàn)多人聊天系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)多人聊天系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • java瀏覽器文件打包下載過程解析

    java瀏覽器文件打包下載過程解析

    這篇文章主要介紹了java瀏覽器文件打包下載過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • SpringBoot入門實現(xiàn)第一個SpringBoot項目

    SpringBoot入門實現(xiàn)第一個SpringBoot項目

    今天我們一起來完成一個簡單的SpringBoot(Hello World)。就把他作為你的第一個SpringBoot項目。具有一定的參考價值,感興趣的可以了解一下
    2021-09-09
  • Spring MVC集成springfox-swagger2構(gòu)建restful API的方法詳解

    Spring MVC集成springfox-swagger2構(gòu)建restful API的方法詳解

    這篇文章主要給大家介紹了關(guān)于Spring MVC集成springfox-swagger2構(gòu)建restful API的相關(guān)資料,文中介紹介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • Mybatis注解實現(xiàn)多數(shù)據(jù)源讀寫分離詳解

    Mybatis注解實現(xiàn)多數(shù)據(jù)源讀寫分離詳解

    這篇文章主要給大家介紹了關(guān)于Mybatis注解實現(xiàn)多數(shù)據(jù)源讀寫分離的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • springboot2升級到springboot3過程相關(guān)修改記錄

    springboot2升級到springboot3過程相關(guān)修改記錄

    本文詳細(xì)記錄了將Spring Boot 2升級到Spring Boot 3的過程,包括升級JDK到17、修改依賴、配置文件調(diào)整以及處理一些特定問題,如Redisson版本升級和Swagger配置,感興趣的朋友跟隨小編一起看看吧
    2024-12-12

最新評論

武汉市| 岱山县| 兴化市| 菏泽市| 灵山县| 邢台县| 金寨县| 黔西| 简阳市| 房产| 怀宁县| 安陆市| 绥宁县| 鹤峰县| 绵阳市| 黄冈市| 宁德市| 株洲县| 类乌齐县| 磴口县| 宁武县| 固阳县| 辽宁省| 新平| 漠河县| 长白| 阆中市| 米易县| 梧州市| 十堰市| 静安区| 前郭尔| 虞城县| 阜南县| 中西区| 龙陵县| 信阳市| 温泉县| 陆河县| 巴彦淖尔市| 丰宁|