JAVA EE_文件操作和IO

人們大多數時候的焦慮,大概是太想要一個那不確定的答案了吧。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 一一? 陳長生.

1.認識文件

? ? ? ? 現實中,我們把一張一張有內容的紙整合在一起稱為文件,計算機中,通過硬盤這種I/O設備進行數據保存時,它會獨立成一個一個的單位保存,而這種以單位方式保存的也就稱為文件。

? ? ? ? 文件除了數據內容外,還有文件名,文件類型,文件大小等信息,我們稱為文件的元信息。

1.1.樹型模型組織 和 目錄

? ? ? ? 隨著文件的越來越多,對一批大量的文件我們就需要進行管理,而樹型模型就是個很好的管理模式,有父級,同級,子級,而這種我們一般稱為文件夾或目錄。

1.2.文件路徑(Path)

? ? ? ? 那么創建了文件如何在計算機查找那唯一的文件呢,我們一般用絕對路徑和相對路徑。

1.2.1.絕對路徑

? ? ? ? 絕對路徑就是一條完整的路徑,開頭是從盤符(例如:C:)開始的,可以從樹型的角度想,每個節點都是從根節點開始往下,而樹型中的根節點就是我們所謂的盤符。

例:D:\java相關\java ee\4.Java+EE初階課件\Java EE初階課件

1.2.2.相對路徑

? ? ? ? ?除了從根節點開始出發,我們還可以從任意節點查找,這種我們就稱為相對路徑。

例:\Java EE初階課件

1.3.文件類型

? ? ? ? 普通文件由于被保存的方式不同,我們也可以將文件分文本文件和二進制文件。

1.3.1.文本文件

? ? ? ? 被ascii碼編譯過的字符,每個字符都對應著一個ascii碼值。

1.3.2.二進制文件

????????文件內容通常由字節序列組成,不依賴于字符編碼。

2.JAVA中操作文件

? ? ? ? JAVA中通過File類對一個文件進行抽象的描述,注:有File對象并不代表該文件真實存在,它只是對文件或目錄路徑的抽象表示。

2.1.File類

2.1.1.File構造方法

import java.io.File;
import java.net.URI;
import java.net.URL;
//構造方法示例
public class text1 {public static void main(String[] args) {//File(URL url)//通過url來實例化File對象URI url =new File("text1.txt").toURI();//獲取當前類的路徑File file1 =new File(url);//File(String pathname)//通過絕對路徑來實例化File對象File file2=new File("text1.txt");//獲取當前類的路徑//File(String parent,string chile)//通過父路徑和子路徑來實例化File對象File file3=new File("C:/parent","chile.txt");//獲取當前類的路徑下的chile.class文件//File(File parent,String child)//通過實例化過的父路徑和每實例化過的子路徑來實例化路徑File Praent=new File("C:/parent");File file4=new File(Praent,"chile.txt");}
}

2.1.2.File方法

get相關的方法
//get相關方法
import java.io.File;
public class text2 {public static void main(String[] args) throws Exception  {File file=new File("./text");//獲取文件名file.getName();//獲取父文件夾名file.getParent();//獲取文件路徑file.getPath();//獲取絕對路勁file.getAbsolutePath();//獲取規范路徑file.getCanonicalPath();}
}
文件與文件夾(目錄)的創建刪除
//文件與文件夾(目錄)的創建刪除
import java.io.File;
public class text3 {public static void main(String[] args) throws Exception {File file=new File("./text");//文件的創建file.createNewFile();//文件的刪除file.delete();//文件夾的創建file.mkdir();//多重文件夾的創建file.mkdirs();}
}
判斷
//判斷
import java.io.File;
public class text4 {public static void main(String[] args) {File file=new File("./text");//判斷是否是文件夾file.isDirectory();//判斷是否是文件file.isFile();}
}

3.數據流--文件內容的讀寫

? ? ? ? 文件內容的操作,一般分為讀文件(硬盤數據讀到內存中)和寫文件(內存的數據寫入硬盤),而我們計算機是用流對象來進行文件內容的操作。

3.1.流操作

????????

3.1.1.InputStream與FileInputStream

? ? ? ? JAVA提供的InputStream類可以提供讀取方法,但是因為它是抽象類,所以要有它的具體實現類FileputStream來實現讀取方法。

1)關閉資源

? ? ? ? JAVA中“關閉資源”是一個重要的操作,它能起到防止資源泄露,保證數據完整性的功能,在JAVA中有提供close()方法來關閉資源,但是大多數情況,我們都是使用try-with-resources(下面講到)。

2)輸出流
read()
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
//read()方法
public class text5 {public static void main(String[] args) throws Exception { //實例化一個File對象,指定文件路徑  File file=new File("./text.txt");//創建文件file.createNewFile();//實例化一個FileInputStream對象,指定文件路徑//try-with-resources語句,自動關閉資源try(InputStream input=new FileInputStream(file)){//循環讀取文件內容while(true){//讀取一個字節int c=input.read();//因為當read()方法讀取完文件中的內容后還會返回-1//所以當read()方法返回-1時,就說明文件中的內容已經全部讀取完了if(c==-1){break;}// 將讀取到的字節轉換為十六進制格式輸出// 適用于查看字節的原始值,不僅限于ASCII編碼的文本文件System.out.printf("0x%x",c);System.out.println();}} catch (Exception e) {e.printStackTrace();// TODO: handle exception}}
}
read(byte[] b)
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
//read(byte[] b)
public class text6 {public static void main(String[] args) throws Exception {//實例化File對象,指定文件路徑File file=new File("./ccs.txt");//創建文件file.createNewFile();//實例化一個FileInputStream對象,指定文件路徑//try-with-resources語句,自動關閉資源try(InputStream f1=new FileInputStream(file)){//循環讀取文件內容while(true){//定義一個byte數組,用于存儲讀取到的字節byte []bytes=new byte[1024];//調用read方法,將文件內容讀取到bytes數組中int n=f1.read(bytes);//如果read方法返回-1,表示文件已經讀取完畢if(n==-1){break;}  //遍歷bytes數組,輸出每個字節的十六進制表示for(int i=0;i<n;i++){System.out.printf("0x%x",bytes[i]);System.out.println();}}}catch( Exception e){e.printStackTrace();}  }
}
3)輸入流
write()

先創建一個空白的文本文件

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
//write()方法
//write()方法用于將數據寫入文件,數據可以是字節數組,也可以是單個字節。
public class text7 {public static void main(String[] args) throws IOException {//實例化一個File對象,指定文件路徑File input=new File("./demo1.txt");//創建文件input.createNewFile();//try-with-resources語句,自動關閉資源//FileOutputStream類是OutputStream的子類,用于將數據寫入文件try (OutputStream output = new FileOutputStream(input);){//寫入ascii為97,98,99,100的幾個字節output.write(97);output.write(98);output.write(99);output.write(100);} catch (Exception e) {e.printStackTrace();}}
}

運行后文本內容

內容為ascii為97,98,99,100的字符

write(byte[] b)方法
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
// write(byte[] b)方法
public class text8 {public static void main(String[] args) throws IOException {//實例化一個File對象,指定文件路徑File input=new File("./demo1.txt");//創建文件input.createNewFile();//try-with-resources語句,自動關閉資源//FileOutputStream類是OutputStream的子類,用于將數據寫入文件try (OutputStream output = new FileOutputStream(input);){//創建一個字節數組,存儲要寫入的字節byte[] bytes = {101,102,103,104};//將字節數組寫入文件output.write(bytes);   } catch (Exception e) {e.printStackTrace();}}
}

運行后文本內容

由原本的abcd轉為efgh

append

????????明明沒有進行刪除操作,為什么abcd不見了呢?其實這個是因為它在每次運行時就創建一個新的文本,相當于將之前的內容清空然后再填入新的數據

????????那有沒有什么辦法可以不清除之前的數據呢,答案是有的!

????????可以看到String name后面還有給參數,是boolean類型的append,該參數是判斷是否需要追加內容

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
// 追加方法
public class text9 {public static void main(String[] args) throws IOException {//實例化一個File對象,指定文件路徑File input=new File("./demo1.txt");//創建文件input.createNewFile();//try-with-resources語句,自動關閉資源//FileOutputStream類是OutputStream的子類,用于將數據寫入文件try (OutputStream output = new FileOutputStream(input,true);){//創建一個字節數組,存儲要寫入的字節byte[] bytes = {101,102,103,104};//將字節數組寫入文件output.write(bytes);   } catch (Exception e) {e.printStackTrace();}}
}

運行后文本內容

可以看到已經成功追加數據了~~

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

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

相關文章

UNITY 屏幕UI自適應

1.主要就是根據屏幕的選擇根據尺寸 和UI的錨點和中心點來選擇&#xff0c;也可以通過代碼來動態修改 2.參考視頻&#xff1a;Unity UGUI屏幕自適應看這個就夠了_嗶哩嗶哩_bilibili

05-RabbitMQ 面試題-mk

文章目錄 1.RabbitMQ 核心組件及功能詳解2.RabbitMQ-如何保證消息不丟失?3.RabbitMQ消息的重復消費問題如何解決的?4.RabbitMQ中死信交換機 ? (RabbitMQ延遲隊列有了解過嘛)5.RabbitMQ如果有100萬消息堆積在MQ , 如何解決(消息堆積怎么解決)6.RabbitMQ的高可用機制有了解過嘛…

產品需求設計評審會:三步精準定位需求核心

“不謀全局者&#xff0c;不足謀一域&#xff1b;不謀萬世者&#xff0c;不足謀一時。”——陳澹然 強調了從全局和長遠的角度去謀劃事情的重要性&#xff0c;與產品設計中先從宏觀層面定位需求&#xff0c;而不是陷入細節的理念相契合。 今日清晨&#xff0c;我參加了一場產品…

java中常用的集合 - 面試篇

HashMap 一、基礎常量以及結構 //數組默認初始容量static final int DEFAULT_INITIAL_CAPACITY 1 << 4; // aka 16//數組容量最大值static final int MAXIMUM_CAPACITY 1 << 30;//默認擴容因子static final float DEFAULT_LOAD_FACTOR 0.75f;//鏈表長度閾值 樹…

PDF解析示例代碼學習

以下是結合多種技術實現的PDF解析詳細示例&#xff08;Python實現&#xff09;&#xff0c;涵蓋文本、表格和掃描件處理場景&#xff1a; 一、環境準備與依賴安裝 # 核心依賴庫 pip install pdfplumber tabula-py pytesseract opencv-python mysql-connector-python 二、完整…

Docker容器網絡與NAT

一、背景 之前分享關于NAT網絡地址轉換的相關文章&#xff0c;docker中的網絡正好使用到了NAT&#xff0c;順帶著把這個分享一下&#xff0c;分析docker容器的網絡數據包流出、數據流入原理分析。 知識回顧: docker運行一個容器之后&#xff0c;會給這個容器一個獨立的netns網絡…

Spring Boot 熱部署詳解,包含詳細的配置項說明

Spring Boot 熱部署詳解 1. 熱部署簡介 熱部署&#xff08;Hot Deployment&#xff09;允許在應用運行時修改代碼或配置文件&#xff0c;無需重啟應用即可使更改生效。Spring Boot 通過 spring-boot-devtools 模塊實現這一功能&#xff0c;其核心依賴于 LiveReload 技術和自動…

詳細解讀 box-sizing: border-box;

代碼解讀 * {box-sizing: border-box; } 解釋&#xff1a; * - 這是CSS的通用選擇器&#xff0c;表示匹配文檔中的所有元素 box-sizing: border-box; - 設置元素的盒模型計算方式為border-box 盒模型說明&#xff1a; 默認情況下&#xff0c;CSS使用content-box盒模型&…

《一文講透》第7期:KWDB 巧用標簽與索引優化查詢性能

引言 在工業物聯網快速發展的今天&#xff0c;各類智能傳感器設備已廣泛應用于智能制造、能源電力、智慧城市等關鍵領域。這些設備以極高的采樣頻率持續產生監測數據&#xff0c;使得單條產線每秒產生數十萬條傳感器數據已成為行業常態&#xff0c;這對數據存儲系統的寫入吞吐…

哈希擴展——一致性哈希

目錄 一、什么是一致性哈希 二、一致性哈希原理 2.1 hash 環 三、服務器擴容場景 3.1 服務器增加 3.2 服務器減少 3.3 使用虛擬節點 四、 一致性哈希的使用場景 一、什么是一致性哈希 一致性哈希是一種哈希算法&#xff0c;用于將數據分布到不同的節點或存儲區域&…

arcgis幾何與游標(1)

本節我們對幾何進行展開學習 ArcPy 的幾何對象 在 ArcPy 中&#xff0c;幾何對象是表示地理空間數據的核心。它包括點&#xff08;Point&#xff09;、多點&#xff08;Multipoint&#xff09;、線&#xff08;Polyline&#xff09;和面&#xff08;Polygon&#xff09;等類型…

分布式熱點網絡

核心設計理念&#xff1a; 在自然災害&#xff08;地震、洪水、臺風&#xff09;、極端環境&#xff08;無人區&#xff09;及網絡管制&#xff08;欠費停機&#xff09;等場景下&#xff0c;傳統中心化網絡易因核心節點失效導致全局癱瘓。本方案提出構建去中心化設備網絡&…

【5G學習】基本概念之多頻資源以及子載波和信道

在5G通信中&#xff0c;子載波、信道以及時域、頻域、碼域、空域是構建無線傳輸系統的核心概念。它們共同定義了信號的傳輸方式、資源分配和多維復用技術。以下是詳細解釋及其相互關系&#xff1a; 一、核心概念定義 1. 子載波&#xff08;Subcarrier&#xff09; 定義&#…

Coze 和 n8n 的詳細介紹及多維度對比分析,涵蓋功能、架構、適用場景、成本等關鍵指標

以下是 Coze 和 n8n 的詳細介紹及多維度對比分析&#xff0c;涵蓋功能、架構、適用場景、成本等關鍵指標&#xff1a; 一、Coze 詳細介紹 1. 基礎信息 類型&#xff1a;低代碼自動化平臺&#xff08;SaaS&#xff09;。開源性&#xff1a;閉源&#xff08;企業版需付費&…

分發餅干問題——用貪心算法解決

目錄 一&#xff1a;問題描述 二&#xff1a;解決思路 貪心策略&#xff08;C語言&#xff09;算法復習總結3——貪心算法-CSDN博客 三&#xff1a;代碼實現 四&#xff1a;復雜度分析 一&#xff1a;問題描述 分發餅干問題是一個經典的可以使用貪心算法解決的問題&#xf…

【Python爬蟲】簡單案例介紹4

本文繼續接著我的上一篇博客【Python爬蟲】簡單案例介紹3-CSDN博客 目錄 3.4 完整代碼 3.4 完整代碼 此小節給出上述案例的完整代碼&#xff0c; # encodingutf-8 import re, json, requests, xlwt, csv import pandas as pd from lxml import etree from bs4 import Beauti…

使用ADB工具分析Android應用崩潰原因:以閃動校園為例

使用adb工具分析模擬器或手機里app出錯原因以閃動校園為例 使用ADB工具分析Android應用崩潰原因&#xff1a;以閃動校園為例 前言 應用崩潰是移動開發中常見的問題&#xff0c;尤其在復雜的Android生態系統中&#xff0c;找出崩潰原因可能十分棘手。本文將以流行的校園應用&q…

【藍橋云課】男女搭配 python

題目 題目 題解 import mathT int(input()) for _ in range(T):N, M, K map(int, input().split())people_num N M# 目前為止可以組成的隊數group_num min(N // 2, M)if people_num - group_num * 3 < K:group_num-math.ceil((K-(people_num - group_num * 3))/3)pr…

edge 更新到135后,Clash 打開后,正常網頁也會自動跳轉

發現了一個有意思的問題&#xff1a;edge 更新135后&#xff0c;以前正常使用的clash出現了打開deepseek也會自動跳轉&#xff1a; Search Resultshttps://zurefy.com/zu1.php#gsc.tab0&gsc.qdeepseek &#xff0c;也就是不需要梯子的網站打不開了&#xff0c;需要的一直正…

MCP協議實戰指南:在VS Code中實現PostgreSQL到Excel的自動化遷移

作者&#xff1a;后端小肥腸 &#x1f34a; 有疑問可私信或評論區聯系我。 &#x1f951; 創作不易未經允許嚴禁轉載。 姊妹篇&#xff1a; 從PDF到精準答案&#xff1a;Coze助力RAGFlow框架提升數據召回率_提升ragflow-CSDN博客 CozeTreeMind實測&#xff1a;秒出ISO標準流程圖…