文件IO的基礎操作

Java針對文件進行的操作:文件系統操作,File類(file類指定的路徑,可以是一個不存在的文件)

文件內容操作? ? ?:? ? ? 流對象

分為兩類

(1)字節流? ? ?以字節為基本的讀寫單位的? ? ? ??

二進制文件? ? ? ? ?InputStream? ?OutputStream

(2)字符流? ? ? 以字符為基本的讀寫單位的? ? ? ? ? ? ? ?Reader? ? ?Writer

文本文件

文件內容的操作:

(1)打開文件? ? ? 每次打開一個文件,都會消耗指定進度文件描述符表上面的一個頂

(2)關閉文件? ? ? ? 文件描述符表,長度是有限的(不同系統,不一樣,也是可以配置)

(3) 讀文件? ? ? 硬盤->內存

讀文件的時候,還有一個很有用的工具類

Scanner??

掃描指定目錄,并找到名稱包含指定字符的所有普通文件(不包含目錄),并且后續詢問用戶是否要刪除文件

查找+刪除

文件中內容添加:

package io;import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;public class Demo08 {public static void main(String[] args) {try (Reader reader = new FileReader("d:/test.txt")){while(true) {int c = reader.read();if(c == -1){break;}char ch = (char)c;System.out.println(ch);}}catch (IOException e){e.printStackTrace();}}
}
package io;import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;public class Demo09 {public static  void main(String[] args) {try(Writer writer  = new FileWriter("d:/test.txt",true)){writer.write("你好世界你好世界");} catch (IOException e) {e.printStackTrace();}}
}
package io;import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;public class Demo10 {public static void main(String[] args) {try(InputStream inputStream = new FileInputStream("d:/test.txt")) {Scanner scanner = new Scanner(inputStream);scanner.next();}catch (IOException e){e.printStackTrace();}}
}

查找文件的關鍵詞

package io;import java.io.File;
import java.util.Scanner;public class Demo11 {public static void main(String[] args) {
//1.輸入必要信息Scanner scanner = new Scanner(System.in);System.out.println("請輸入要搜索的目錄: ");String rootPath = scanner.next();System.out.println("請輸入要查詢的詞: ");String searchWord = scanner.next();//2.構造File對象,檢查路徑是否合法File rootFile = new File(rootPath);if(!rootFile.isDirectory()) {System.out.println("輸入的路徑非法!");return;}//3.進行遞歸搜索searchFile(rootFile,searchWord);
}private static void searchFile(File rootFile,String searchWord) {//1.列出當前目錄中有哪些內容File[] files = rootFile.listFiles();if(files == null) {//空目錄,直接 返回return;}//2.遍歷目錄下的每個結果,進行判定for(File f: files) {//System.out.println("當前掃描文件為: "+ f.getAbsolutePath());if(f.isFile()) {//普通文件,就判定文件名是否包含  查詢詞String fileName = f.getName();if(fileName.contains(searchWord)){//當前文件即為所求System.out.println("找到匹配結果: "+ f.getAbsolutePath());}}else if(f.isDirectory()) {//針對子目錄進一步遞歸searchFile(f,searchWord);}}
}
}

字符類? Reader? Writer? 抽象類,不能直接new

?FileInputStream? ? ? ?FileOutputStream

1)打開文件? 構造方法(路徑)

2)讀文件(read)/寫文件 (write)

3)關閉文件(close)? 能夠使用try with resources

給定 路徑

給定 查詢詞

在路徑中查找,文件名中包含查詢詞文件

案例二:復制一個文件?

輸入一個路徑,表示要被復制的文件

輸入另一個路徑,表示要復制到的目標目錄

package io;import java.io.*;
import java.util.Scanner;
//案例二:復制一個文件
//
//        輸入一個路徑,表示要被復制的文件
//
//        輸入另一個路徑,表示要復制到的目標目錄
public class Demo012 {public static void main(String[] args) {// 1. 輸入必要的信息Scanner scanner = new Scanner(System.in);System.out.println("請輸入要復制的文件路徑: ");String srcPath = scanner.next();System.out.println("請輸入要復制到的目標路徑: ");String destPath = scanner.next();// 2. 驗證上述路徑是否合法.File srcFile = new File(srcPath);if (!srcFile.isFile()) {System.out.println("輸入的要復制的文件路徑非法!");return;}File destFile = new File(destPath);if (!destFile.getParentFile().isDirectory()) {System.out.println("輸入的要復制到的目標路徑非法!");return;}// 3. 讀寫文件try (InputStream inputStream = new FileInputStream(srcFile);OutputStream outputStream = new FileOutputStream(destFile)) {while (true) {byte[] bytes = new byte[1024];int n = inputStream.read(bytes);if (n == -1) {break;}outputStream.write(bytes, 0, n);}} catch (IOException e) {throw new RuntimeException(e);}}
}

運行結果:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94257.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94257.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94257.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【模版匹配】基于深度學習

基于深度學習的模版匹配 概述 本報告整理了2024-2025年最新的、可直接使用的模板匹配相關論文、方法和開源代碼實現。所有方法都提供了完整的代碼實現和預訓練模型,可以直接應用到實際項目中。 一、輕量級現代模板匹配框架 1.1 UMatcher - 4M參數的緊湊型模板匹…

CMake進階:Ninja環境搭建與加速項目構建

目錄 1.引入Ninja的原因 2.Ninja 環境搭建(跨平臺) 2.1.Linux系統安裝 2.2.macOS 系統 2.3.Windows 系統 2.4.源碼編譯安裝(通用方案) 3.Ninja 與構建系統配合:以 CMake 為例 4.加速構建的關鍵技巧 5.Ninja 與…

開發避坑指南(35):mybaits if標簽test條件判斷等號=解析異常解決方案

異常信息 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: The expression orderInfo.idList evaluated to a null value.報錯語句 <if test"orderInfo.queryFlag ! null and orderInfo.queryFlag sett…

GitCode 疑難問題診療:全面指南與解決方案

引言 在軟件開發的動態領域中&#xff0c;GitCode 作為一款強大的分布式版本控制系統&#xff0c;已然成為團隊協作與項目管理的基石。它賦予開發者高效管理代碼版本、輕松實現并行開發以及順暢協同合作的能力。然而&#xff0c;如同任何復雜的技術工具&#xff0c;在 GitCode…

使用 JS 渲染頁面并導出為PDF 常見問題與修復

本文直擊兩個最常見的導出痛點&#xff0c;并給出可直接落地的診斷 修復方案&#xff08;適用于 html2canvas jsPDF ECharts/自繪 canvas 場景&#xff09;。 問題清單 問題 A&#xff1a;導出后圖表模糊&#xff0c;線條與文字不清晰&#xff08;低分辨率&#xff09;。問題…

【Java后端】【可直接落地的 Redis 分布式鎖實現】

可直接落地的 Redis 分布式鎖實現&#xff1a;包含最小可用版、生產可用版&#xff08;帶 Lua 原子解鎖、續期“看門狗”、自旋等待、可重入&#xff09;、以及基于注解AOP 的無侵入用法&#xff0c;最后還給出 Redisson 方案對比與踩坑清單。一、設計目標與約束 獲取鎖&#x…

數據結構 -- 鏈表--雙向鏈表的特點、操作函數

雙向鏈表的操作函數DouLink.c#include "DouLink.h" #include <stdio.h> #include <stdlib.h> #include <string.h>/*** brief 創建一個空的雙向鏈表* * 動態分配雙向鏈表管理結構的內存&#xff0c;并初始化頭指針和節點計數* * return 成功返回指…

Wireshark獲取數據傳輸的碼元速率

一、Wireshark的物理層參數 Wireshark主界面可以看到數據發送時刻和長度&#xff1a; 這個時刻是Wireshark完整獲取數據包的時刻&#xff0c;實際上就是結束時刻。 需要知道的是&#xff1a; Wireshark工作在數據鏈路層及以上&#xff0c;它能解碼 以太網幀 / IP 包 / TCP…

11.1.3 完善注冊登錄,實現文件上傳和展示

1、完善注冊/登錄 1. 涉及的數據庫表單&#xff1a;user_info 2. 引用MySQL線程池&#xff0c;Redis線程池 3. 完善注冊功能 4. 完善登錄功能 2.1 涉及的數據庫表單&#xff1a;user_info 重新創建數據庫 #創建數據庫 DROP DATABASE IF EXISTS 0voice_tuchuang;CREATE D…

【Linux文件系統】目錄結構

有沒有剛進入Linux世界時&#xff0c;對著黑乎乎的終端&#xff0c;輸入一個 ls / 后&#xff0c;看著蹦出來的一堆名字 like bin, etc, usr&#xff0c;感覺一頭霧水&#xff0c;像是在看天書&#xff1f; 別擔心&#xff0c;你不是一個人。Linux的文件系統就像一個超級有條理…

螺旋槽曲面方程的數學建模與偏導數求解

螺旋槽曲面的數學描述 在鉆頭設計和機械加工領域,螺旋槽的幾何建模至關重要。螺旋槽通常由徑向截形繞軸做螺旋運動形成,其數學模型可通過參數方程和隱函數方程兩種方式描述。 設螺旋槽的徑向截形方程為: y=f(z)y = f(z)y=f(z) x=xcx = x_cx=xc? 其中 xcx_cxc? 為常數,…

線性回歸:機器學習中的基石

在機器學習的眾多算法中&#xff0c;線性回歸無疑是最基礎也是最常被提及的一種。它不僅在統計學中占有重要地位&#xff0c;而且在預測分析和數據建模中也發揮著關鍵作用。本文將深入探討線性回歸的基本概念、評估指標以及在實際問題中的應用&#xff0c;并通過一個模擬的氣象…

編程刷題-資料分發1 圖論/DFS

P2097 資料分發 1 題目描述 有一些電腦&#xff0c;一部分電腦有雙向數據線連接。 如果一個電腦得到數據&#xff0c;它可以傳送到的電腦都可以得到數據。 現在&#xff0c;你有這個數據&#xff0c;問你至少將其輸入幾臺電腦&#xff0c;才能使所有電腦得到數據。 輸入格式 第…

RabbitMQ:延時消息(死信交換機、延遲消息插件)

目錄一、死信交換機【不推薦】二、延遲消息插件【推薦】2.1 安裝插件【Linux】2.2 安裝插件【Windows】2.3 如何使用延時消息&#xff1a;生產者發送消息時指定一個時間&#xff0c;消費者不會立刻收到消息&#xff0c;而是在指定時間之后才收到消息。 延時任務&#xff1a;設置…

動學學深度學習05-深度學習計算

動學學深度學習pytorch 參考地址&#xff1a;https://zh.d2l.ai/ 文章目錄動學學深度學習pytorch1-第05章-深度學習計算1. 層&#xff08;Layer&#xff09;與塊&#xff08;Block&#xff09;1.1 什么是深度學習中的“層”&#xff1f;1.2 什么是“塊”&#xff08;Block&…

智慧工廠煙霧檢測:全場景覆蓋與精準防控

智慧工廠煙霧檢測&#xff1a;構建工業安全的智能防線&#xff08;所有圖片均為真實項目案例&#xff09;在工業4.0時代&#xff0c;智慧工廠通過物聯網、人工智能與大數據技術的深度融合&#xff0c;實現了生產流程的數字化與智能化。然而&#xff0c;工廠環境中的火災隱患始終…

@JsonIgnoreProperties注解詳解

JsonIgnoreProperties是 Jackson 庫中的一個重要注解&#xff0c;用于在 JSON 序列化&#xff08;對象轉 JSON&#xff09;和反序列化&#xff08;JSON 轉對象&#xff09;過程中??控制屬性的可見性??。它提供了更高級別的屬性忽略能力&#xff0c;特別適合處理復雜場景。一…

紅酒數據集預處理實戰:缺失值處理的 5 種打開方式,從入門到進階一步到位

在數據分析與建模流程中&#xff0c;缺失值處理是數據預處理階段的關鍵步驟&#xff0c;直接影響后續模型的準確性與穩定性。本文以紅酒數據集為研究對象&#xff0c;詳細介紹如何通過基礎統計方法&#xff08;均值、中位數、眾數&#xff09;、完整案例分析&#xff08;CCA&am…

Node.js 開發 JavaScript SDK 包的完整指南(AI)

一、核心概念SDK 包定義 專為特定服務/平臺封裝的工具庫&#xff0c;提供標準化 API 調用、錯誤處理、類型聲明等功能。示例&#xff1a;支付寶 SDK、AWS SDK、微信小程序 SDK。技術棧選擇 語言&#xff1a;JavaScript/TypeScript&#xff08;推薦 TS&#xff0c;便于類型提示&…

Redis實戰-基于Session實現分布式登錄

1.流程分析1.1發送短信驗證碼提交手機號的時候要進行校驗手機號&#xff0c;校驗成功才會去生成驗證碼&#xff0c;將驗證碼保存到session&#xff0c;發生他把這部分那。1.2短信驗證碼登錄/注冊如果提交手機號和驗證碼之后&#xff0c;校驗一致才進行根據手機號查詢用戶&#…