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

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

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

認(rèn)識(shí)文件

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

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

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

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

文件路徑(Path)

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

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

知識(shí)擴(kuò)展

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

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

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

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

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

Java 中操作文件

Java 中通過(guò) java.io.File 類(lèi)來(lái)對(duì)一個(gè)文件(包括目錄)進(jìn)行抽象的描述。

值得注意的是,有 File 對(duì)象,并不代表真實(shí)存在該文件

File 概述

我們先來(lái)看看 File 類(lèi)中的常見(jiàn)屬性、構(gòu)造方法和方法

屬性

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

構(gòu)造方法

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

方法

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

File使用實(shí)例代碼演示

實(shí)例一

觀察get系列的特點(diǎn)和差異

代碼如下:

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

public class IODemo1 {
    public static void main(String[] args) throws IOException {
        File file = new File("./遇事問(wèn)春風(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 對(duì)象,并不代表真實(shí)存在該文件

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

運(yùn)行結(jié)果如下:

實(shí)例二

普通文件的創(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("./遇事問(wèn)春風(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ù),則不會(huì)創(chuàng)建。返回false
        System.out.println(file.createNewFile());
    }
}

結(jié)果如下:

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

實(shí)例三

普通文件的刪除

代碼如下:

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

public class IODemo3 {
    public static void main(String[] args) throws IOException {
        File file = new File("./遇事問(wèn)春風(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é)果展示:

實(shí)例四

觀察 deleteOnExit 的現(xiàn)象

我們先來(lái)觀察以下代碼,沒(méi)有加deleteOnExit

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

public class IODemo4 {
    public static void main(String[] args) throws IOException {
        File file = new File("./遇事問(wèn)春風(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é)果如下:

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

當(dāng)我們加上deleteOnExit后再來(lái)看看運(yùn)行結(jié)果

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

這就是deleteOnExit方法的效果

實(shí)例五

觀察目錄的創(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é)果如下:

實(shí)例六

觀察目錄創(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());
    }
}

運(yùn)行結(jié)果如下:

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

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é)果展示:

實(shí)例七

觀察文件重命名

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

文件重命名如下:

總結(jié)

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

相關(guān)文章

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

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

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

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

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

    解決SpringBoot運(yùn)行Test時(shí)報(bào)錯(cuò):SpringBoot Unable to find

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

    java——多線(xiàn)程基礎(chǔ)

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

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

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

    解決idea中maven項(xiàng)目無(wú)端顯示404錯(cuò)誤的方法

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

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

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之紅黑樹(shù)的實(shí)現(xiàn)方法和原理,紅黑樹(shù)是一種特殊的二叉查找樹(shù),每個(gè)結(jié)點(diǎn)都要儲(chǔ)存位表示結(jié)點(diǎn)的顏色,或紅或黑,本文將通過(guò)示例為大家詳細(xì)講講紅黑樹(shù)的原理及實(shí)現(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項(xiàng)目都是Maven和gradle的天下了。本文將介紹Apache Maven ToolChains的使用。
    2021-06-06
  • Java使用Hutool執(zhí)行日期的加法和減法操作方法

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

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

最新評(píng)論