Java 文件處理完全指南:創建、讀取、寫入和刪除文件詳細解析

来源:https://www.cnblogs.com/xiaowange/p/18081315
-Advertisement-
Play Games

Java 文件操作 文件處理簡介 文件處理是任何應用程式的重要部分。Java 提供了許多用於創建、讀取、更新和刪除文件的方法。 Java 文件處理 Java 中的文件處理主要通過 java.io 包中的 File 類完成。該類允許我們處理文件,包括創建、讀取、寫入和刪除文件。 創建 File 對象 ...


Java 文件操作

文件處理簡介

文件處理是任何應用程式的重要部分。Java 提供了許多用於創建、讀取、更新和刪除文件的方法。

Java 文件處理

Java 中的文件處理主要通過 java.io 包中的 File 類完成。該類允許我們處理文件,包括創建、讀取、寫入和刪除文件。

創建 File 對象

要使用 File 類,我們首先需要創建該類的對象,然後指定文件名或目錄名。

import java.io.File;

File myObj = new File("filename.txt");

File 類的常用方法

File 類提供了許多有用的方法,用於創建和獲取有關文件的信息,例如:

  • canRead(): 測試文件是否可讀
  • canWrite(): 測試文件是否可寫
  • createNewFile(): 創建一個空文件
  • delete(): 刪除文件
  • exists(): 測試文件是否存在
  • getName(): 返迴文件的名稱
  • getAbsolutePath(): 返迴文件的絕對路徑名
  • length(): 返迴文件的大小(位元組為單位)
  • list(): 返回目錄中文件的數組
  • mkdir(): 創建一個目錄

讀取文件

可以使用多種方法讀取文件,例如 ScannerBufferedReaderFileInputStream 等。

使用 Scanner 類讀取文件內容

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadFile {
  public static void main(String[] args) {
    try {
      File myObj = new File("filename.txt");
      Scanner myReader = new Scanner(myObj);
      while (myReader.hasNextLine()) {
        String data = myReader.nextLine();
        System.out.println(data);
      }
      myReader.close();
    } catch (FileNotFoundException e) {
      System.out.println("An error occurred.");
      e.printStackTrace();
    }
  }
}

寫入文件

同樣,可以使用多種方法將數據寫入文件,例如 PrintWriterBufferedWriterFileOutputStream 等。

使用 PrintWriter 類寫入文件內容

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class WriteToFile {
  public static void main(String[] args) {
    try {
      PrintWriter myWriter = new PrintWriter("filename.txt");
      myWriter.write("Handling files in Java can be a bit tricky, but fun enough!");
      myWriter.close();
      System.out.println("Successfully wrote to the file.");
    } catch (FileNotFoundException e) {
      System.out.println("An error occurred.");
      e.printStackTrace();
    }
  }
}

刪除文件

要刪除文件,可以使用 delete() 方法。

示例

import java.io.File;

public class DeleteFile {
  public static void main(String[] args) {
    File myObj = new File("filename.txt");
    if (myObj.delete()) {
      System.out.println("Deleted the file: " + myObj.getName());
    } else {
      System.out.println("Failed to delete the file.");
    }
  }
}

刪除文件夾示例

import java.io.File;

public class DeleteFolder {
  public static void main(String[] args) {
    File myObj = new File("C:\\Users\\MyName\\Test");
    if (myObj.delete()) {
      System.out.println("Deleted the folder: " + myObj.getName());
    } else {
      System.out.println("Failed to delete the folder.");
    }
  }
}

刪除多個文件或文件夾示例

import java.io.File;

public class DeleteMultipleFiles {
  public static void main(String[] args) {
    File dir = new File("C:\\Users\\MyName\\Test");
    File[] files = dir.listFiles();
    for (File file : files) {
      if (file.delete()) {
        System.out.println("Deleted: " + file.getName());
      } else {
        System.out.println("Failed to delete: " + file.getName());
      }
    }
  }
}

以上示例提供了一些基本的文件操作方法,但在實際應用中,您可能需要更複雜的邏輯和錯誤處理。確保處理文件操作時考慮到可能發生的異常,以提高程式的健壯性。

最後

為了方便其他設備和平臺的小伙伴觀看往期文章:

微信公眾號搜索:Let us Coding,關註後即可獲取最新文章推送

看完如果覺得有幫助,歡迎 點贊、收藏、關註


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄前言無法調用析構函數的原因改進方法內嵌回收類智能指針局部靜態變數參考文章 前言 在《單例模式學習》中提到了,在單例對象是通過new關鍵字動態分配在堆上的情況下,當程式退出時,不會通過C++的RAII機制自動調用其析構函數。本文討論一下這種現象的原因以及解決方法。 無法調用析構函數的原因 在DCL ...
  • 目錄前言餓漢式懶漢式懶漢式DCLP局部靜態式(Meyers' Singleton)單例模板參考文章 前言 單例模式,其核心目標是確保在程式運行的過程中,有且只有存在一個實例才能保證他們的邏輯正確性以及良好的效率。因此單例模式的實現思路就是確保一個類有且只有一個實例,並提供一個該實例的全局訪問點。 單 ...
  • 相信有很多小伙伴都有小貓這樣的體會,尤其是接手一個老的系統的時候,總是會吐槽當前的系統很爛,恨不得馬上將其完完全全重構掉。 ...
  • 目錄前言指令重排簡介指令重排對單例模式的影響改進方法std::call_once和std::once_flagstd::atomic和記憶體順序局部靜態變數總結參考文章 前言 在《單例模式學習》中曾提到懶漢式DCLP的單例模式實際也不是線程安全的,這是編譯器的指令重排導致的,本文就簡單討論一下指令重排 ...
  • python基礎學習 Created: November 28, 2023 6:48 PM Tags: Beginning 值得思考的一些事情 構建一項軟體設計有兩種方式:一種是將軟體設計得足夠簡單以至於明顯找不到缺陷;另一種是軟體設計得足夠複雜以至於找不到明顯的缺陷。 ——查爾斯·安東尼·理 ...
  • 虛函數表,以及虛函數指針是實現多態性(Polymorphism)的關鍵機制。多態性允許我們通過基類的指針或引用來調用派生類的函數 定義 虛函數(Virtual Function) 定義:類中使用virtual 關鍵字修飾的函數 叫做虛函數 語法: class Base { public: virtu ...
  • 拓展閱讀 junit5 系列教程 基於 junit5 實現 junitperf 源碼分析 Auto generate mock data for java test.(便於 Java 測試自動生成對象信息) Junit performance rely on junit5 and jdk8+.(ja ...
  • https://leetcode.cn/problems/h-index/description/?envType=study-plan-v2&envId=top-interview-150 註:題目有點難理解,多讀幾遍 可以這樣考慮,建立另一個臨時數組temp,當第i篇文章被引用citiation ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...