黑馬教程強化day3-1

目錄

  • 一、File
    • 1.定義:
    • 2.創建File類的對象
    • 3.File提供的判斷文件類型、獲取文件信息功能
    • 4.File提供的創建的方法
    • 5.File類刪除文件的功能
    • 6.File提供的遍歷文件夾的方法
    • 代碼演示
  • 二、遞歸(了解遞歸算法,以便實現多級遍歷找文件)
    • 1.定義
    • 2.遞歸的形式
    • 3.遞歸三要素
    • 代碼演示
    • 4.文件搜索(重要)
  • 三、字符集
    • 1. 標準ASCII字符串
    • 2.GBK(漢字內碼擴展規范,國標)
    • 3.Unicode字符集(統一碼,也叫萬國碼)
    • 4.對字符的編碼
    • 5.對字符的解碼
    • 代碼演示

一、File

1.定義:

是java.io.包小的類,File類的對象,用于代表當前操作系統的文件(可以是文件、或文件夾)。

2.創建File類的對象

  • public File(String pathname):根據文件路徑創建文件對象。
  • public File(String parent,String child):根據父路徑和子路徑名字創建文件對象。
  • public File(File parent,String child):根據父路徑對應文件對象和子路徑名字創建文件對象。

3.File提供的判斷文件類型、獲取文件信息功能

  • public boolean exists():判斷當前文件對象,對飲的文件路徑是否存在,存在返回True。
  • public boolean isFile():判斷當前文件對象指代的是否是文件,是返回True。
  • public boolean isDirectory():判斷當前文件對象指代的是否是文件夾,是返回True。
  • public String getName():獲取文件的名稱(包含后綴)
  • public long lastModified():獲取文件的大小,返回字節個數
  • public String getPath():獲取創建文件對象,使用的路徑。
  • public String getAbsolutePath():獲取絕對路徑。

4.File提供的創建的方法

  • public boolean createNewFile():創建問價
  • public boolean mkdir():創建一級文件夾
  • public boolean mkdirs():創建多級文件夾

5.File類刪除文件的功能

  • public boolean delete():刪除文件、文件夾,只能刪除空文件夾。

6.File提供的遍歷文件夾的方法

  • public String[] list():獲取當前目錄下所有的“一級文件名稱”到一個字符串數組中去。
  • public File[] listFiles():獲取當前目錄下所有的“一級文件對象”到一個文件對象數組中去(重點)

使用listFiles方法時的注意事項:

  • 當主調是文件,或者路徑不存在時,返回null
  • 當主調是空文件夾時,返回一個長度為0的數組。
  • 當主調是一個有內容的文件夾時,將里面所有一級文件和文件夾的路徑放在File數組中返回。
  • 當主調是一個文件夾,且里面有隱藏文件時,將里面所有文件和文件夾的路徑放在File數組中返回,包括隱藏文件。
  • 當主調是一個文件夾,但是沒有權限訪問該文件夾時,返回null。

代碼演示

package com.item.demo1Flie;
import java.io.File;
import java.io.IOException;
public class Fliedemo1 {public static void main(String[] args) throws IOException {//1.創建File類的對象File f1 = new File("D:\\a.docx");File f2=new File("D:/a.docx");System.out.println(f1.length());//0System.out.println(f2.length());//0System.out.println(f1.exists());//trueSystem.out.println(f1.isFile());//trueSystem.out.println(f1.isDirectory());//falseSystem.out.println(f1.getName());//a.docx//2.只要帶盤符的都稱之為絕對路徑。//3.相對路徑:不帶盤符的都是相對路徑,一般都是找到項目根目錄下的文件。System.out.println(f1.getPath());//D:/a.docxSystem.out.println(f1.getAbsolutePath());//D:/a.docxFile f3=new File("day3\\src\\dilei0.txt");System.out.println(f3.length());//10//4.創建對象代表不存在的文件路徑File f4=new File("D:/aa.docx");System.out.println(f4.exists());//falseSystem.out.println(f4.createNewFile());//把這個文件創建出來,true//5.創建對象代表不存在的文件夾,mkdir(),mkdirs()File f5=new File("D:/bb");System.out.println(f5.exists());//falseSystem.out.println(f5.mkdir());//只能創建一級文件夾,trueFile f6=new File("D:/cc/aa");System.out.println(f5.mkdirs());//可以創建多級文件夾,true//6.創建File對象代表存在的文件,然后刪除,File f7=new File("D:/a.docx");System.out.println(f7.delete());//刪除文件,true,只能刪除空文件夾。//7.可以獲取某個目錄下的全部一級名稱File f8=new File("D:/");String[] names=f8.list();for (String name : names) {System.out.println(name);}//8.可以獲取某個目錄下的全部一級文件對象File[] files=f8.listFiles();for (File file : files) {System.out.println(file.getAbsoluteFile());}}
}

二、遞歸(了解遞歸算法,以便實現多級遍歷找文件)

1.定義

遞歸是一種算法,在程序語言中廣泛應用
從形式上說:方法調用自身的形式稱為方法遞歸。

2.遞歸的形式

直接遞歸:方法自己調用自己
間接遞歸:方法調用其他方法,其他方法有回調方法自己。

3.遞歸三要素

  • 遞歸的公式:
  • 遞歸的終點:
  • 遞歸的方向要走向終結點。

代碼演示

例題:計算n的階乘
需求:計算n的階乘,5的階乘=12345等
分析:1.f(n)=12…*(n-1)*n
2.那么公式等價于f(n)=f(n-1)*n
3.則求1-5的階乘:
f(5)=f(4)*5
f(4)=f(3)*4
f(3)=f(2)*3
f(2)=f(1)*2
f(1)=1

package com.item.demo1Flie;
public class Filedemo2 {public static void main(String[] args) {printA();}public static void printA(){System.out.println("A");printA();//直接調用,沒有停止條件,無限。棧溢出}
}
public class Filedomo3 {public static void main(String[] args) {//目的:計算階乘System.out.println(f(5));}public static int f(int n){if(n==1){return 1;}return f(n-1)*n;//一遍一遍的去往下調用,到最后一步,然后從最后一步開始返回,最終返回1}
}

4.文件搜索(重要)

package com.item.demo1Flie;import java.io.File;/** 文件搜索:**/
public class Filedemo4 {public static void main(String[] args) {//目標:完成文件搜索,找到D:盤下的QQ.txt文件的位置。File dir=new File("D:/");searchFile(dir,"QQ.txt");}public static void searchFile(File dir,String findName){//1.判斷極端情況if(!dir.exists()|| dir==null||dir.isFile()){return;//不搜索}//2.獲取當前目錄下的所有一級文件或者文件夾File[] files=dir.listFiles();//3.判斷當前是否存在一級文件對象,存在才可以遍歷if(files!=null && files.length>0){//4.遍歷一級文件對象for(File file:files){//5.判斷當前一級文件對象是否是文件if(file.isFile()){//6.判斷文件名是否相同if(file.getName().contains(findName)){System.out.println("找到文件:"+file.getAbsoluteFile());}}else{//7.判斷當前文件是否是文件夾//8.如果是文件夾,則繼續遞歸調用searchFile(file,findName);}}}}
}

package com.item.demo1Flie;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;

三、字符集

1. 標準ASCII字符串

定義:美國信息交換標準代碼,包括了英文、符號等。
標準ASCII使用1個字節存儲一個字符,首位是0,因此,總共可表示128個字符。

2.GBK(漢字內碼擴展規范,國標)

定義:漢字編碼字符集,包含2萬多個漢字等字符,GBK中一個中文字符編碼成兩個字節的形式存儲。
注意:GBK兼容了ACII字符集。
GBK規定:漢字的第一個字節的第一位必須是1,漢字占2個字符,英文、數字占1個字節。

3.Unicode字符集(統一碼,也叫萬國碼)

定義:是國際組織制定的,可以容納世界上所有文字、符號的字符集。
UTF-32:我4個字節表示一個字符。
UTF-8(必須掌握):是Unicode字符集的一種編碼方案,采取可變長編碼方案,共分四個長度區:1個字節,2個字節,3個字節,四個字節。
注意:英文字符、數字等只占1個字節(兼容標準ASCII編碼),漢字字符占用3個字節。
UTF-8編碼方式(二進制)

  • 1字節:0xxxxxxx
  • 2字節:110xxxxx 10xxxxxx
  • 3字節:1110xxxx 10xxxxxx 10xxxxxx
  • 4字節:11110xxx 10xxxxxx 10xxxxxx

注意1:字符編碼時,使用的字符集,和解碼時使用的字符集必須一致,否則會出現亂碼
注意2:英文,數字一般不會亂碼,因為很多字符集都兼容了ASCII編碼。

4.對字符的編碼

  • byte[] getBytes():指定平臺的默認字符集將該String編碼為一系列字節,將結果存儲到一個新的字節數組中。
  • byte[] getBytes(String charsetName):使用指定的字符集將該String編碼為一系列字節,將結果存儲到新的字節數組中。

5.對字符的解碼

  • String(byte[] bytes):通過使用平臺的默認字符集解碼指定的字節數組來構造新的String。
  • String(byte[] bytes,String charsetName):通過指定的字符集解碼指定的字節數組來構造新的String。

代碼演示

public class Filedemo5 {public static void main(String[] args) throws UnsupportedEncodingException {//編碼String name="我愛國";byte[] bytes=name.getBytes();//默認平臺的UTF-8編碼byte[] bytes1=name.getBytes("GBK"); //指定GBK編碼,需要拋出異常System.out.println(bytes.length);//9System.out.println(Arrays.toString(bytes));//[-26, -120, -111, -25, -120, -79, -27, -101, -67]System.out.println(bytes1.length);//6System.out.println(Arrays.toString(bytes1));//[-50, -46, -80, -82, -71, -6]//解碼String name1=new String(bytes);String name2=new String(bytes1,"GBK");System.out.println(name1);//我愛國System.out.println(name2);//我愛國}
}

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

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

相關文章

milvus 總結

1. milvus 的默認 admin 角色賬號 root 的密碼 為 Milvus 2. 最開始使用命令: docker-compose -f milvus-standalone-docker-compose.yml up -d 啟動 milvus 后,使用 attu 登錄 Milvus 是不需要輸入賬號/密碼的,可以使用如下方式開啟 mi…

基于docker技術的單主機環境模擬測試批量客戶端

EX. 任務背景 近期接到一個需求是在一個高性能服務器上,模擬啟動多個待測試客戶端的場景,但這個客戶端程序有點特殊,設置了守護模式,并且需要管理員權限會監控系統的/dev/mem節點,單個環境中只能啟動一個。 當前的測…

windows上用vnc viewer 能連接mac,不能連ubuntu

如果 VNC Viewer 可以連接 macOS,但無法連接 Ubuntu,通常是由于 Ubuntu 上的 VNC 服務配置問題或網絡限制導致的。以下是逐步排查和解決方案: 1. 確認 Ubuntu 上已安裝并運行 VNC 服務 (1) 檢查是否安裝了 VNC 服務器 Ubuntu 常用的 VNC 服…

Electron-vite【實戰】MD 編輯器 -- 編輯區(含工具條、自定義右鍵快捷菜單、快捷鍵編輯、拖拽打開文件等)

最終效果 頁面 src/renderer/src/App.vue <div class"editorPanel"><div class"btnBox"><divv-for"(config, key) in actionDic":key"key"class"btnItem":title"config.label"click"config.a…

沒有寶塔面板的服務器上的WordPress網站打包下載到本地?

在服務器上部署的wordpress博客站&#xff0c;沒有寶塔面板&#xff0c;怎么將服務器上的wordpress打包下載到本地&#xff1f; 作者: 曉北斗NorSnow 曉北斗動態視覺設計師&#xff0c;嵐度視覺工作室執行人&#xff1b;主要從事展廳視頻制作、圖形工作站銷售、AIGC研究&#…

Atcoder Beginner Contest 410 題解報告

零、前言 經過七七四十九天的分別&#xff0c;本期 ABC 題解又和大家見面啦&#xff01; 經過七周的奮勇殺題&#xff0c;我終于達成了三個小心愿&#xff1a; 不吃罰時AK上金排名 100 100 100 以內 且 Rated&#xff08;悲催的是&#xff0c;我 ABC400 排名兩位數但沒Rate…

pyspark非安裝使用graphframes

pyspark版本3.1.3 需要文件 graphframes-0.8.2-spark3.1-s_2.12.jarspark-graphx_2.12-3.1.3.jar從 https://github.com/microsoft/adb2spark/raw/main/graphframes-0.8.2-py3-none-any.whl 下載graphframes-0.8.2-py3-none-any.whl。下載后把whl后綴改成zip&#xff0c;解壓…

[Linux入門] Linux磁盤管理與文件系統

目錄 Linux磁盤與文件系統管理詳解&#xff1a;從基礎到實踐 ??一、磁盤基礎簡述?? 1????硬盤類型??&#xff1a; ?2??機械硬盤結構??&#xff1a; 3????磁盤容量計算??&#xff1a; 公式&#xff1a;磁盤容量磁頭數柱面數每磁道扇區數每扇區字節數 …

【Flutter】性能優化總結

【Flutter】性能優化總結 Flutter 性能優化是提升應用流暢度、響應速度和用戶體驗的關鍵。可以從以下幾個方面進行優化&#xff1a; 一、UI 構建與布局優化 1、避免不必要的重建 使用 const 構造函數&#xff1a;如 const Text(Hello)&#xff0c;可以減少 Widget 重建。使用…

5、ZYNQ PL 點燈--流水燈

目錄 1、 概述 2 、硬件電路 3、 新建 VIVADO 工程 4、 添加工程文件 6、編寫流水燈功能的Verilog代碼 7 、添加管腳約束文件 8、 RTL 仿真 8.1 添加仿真測試源碼 8.2 仿真結果 9、 編譯并且產生 bit 文件 10、 下載程序 11、實驗結果 ?編輯12、總結 1、 概述 本…

HTML5 浮動

1. 常見網頁布局 1-3-1布局 1-2-1布局 2. 標準文檔流 3. display屬性? display&#xff1a; block 給span元素設置成block display&#xff1a; inline 給div元素設置成inline display&#xff1a; inline-block 給div和span元素設置為inline-block display&#xff1a; no…

若依使用RedisCache需要注意的事項

存入redis對象的時候會帶一個type字段&#xff0c;此處需要注意 存入方&#xff1a; 此處需要注意&#xff0c;存入redis的時候會帶一個type&#xff0c;也就是類的路徑名 redisCache.setCacheObject(screenPlayQueueName, userDemondDto,userDemondDto.getPlayDuration().in…

【STM32的通用定時器CR1的CKD[1:0]: 時鐘分頻因子 (Clock division)】

在 STM32 的通用定時器&#xff08;如 TIM2, TIM3, TIM4, TIM5 等&#xff09;中&#xff0c;CR1 (Control Register 1) 寄存器中的 CKD[1:0] (Clock division) 位域是一個與抗干擾和數字濾波相關的設置&#xff0c;它并不直接影響定時器計數器 (CNT) 的計數頻率&#xff08;計…

渲染學進階內容——機械動力的渲染系統(2)

Flywheel代碼 這篇來研究一下實例 InstanceHandle 接口深度解析 接口核心作用 InstanceHandle 是 Flywheel 渲染引擎中的 GPU實例句柄 接口,它提供了對底層渲染實例的直接控制能力。這個接口是**實例化渲染(Instanced Rendering)**系統的核心操作接口,與之前討論的 Vis…

Redis:極速緩存與數據結構存儲揭秘

Redis —— 這個強大又靈活的 開源、內存中的數據結構存儲系統。它常被用作數據庫、緩存、消息代理和流處理引擎。 核心特點 (為什么它這么受歡迎&#xff1f;)&#xff1a; 內存存儲 (In-Memory): 數據主要存儲在 RAM 中&#xff0c;讀寫操作直接在內存中進行。核心優勢&…

vulnyx Diff3r3ntS3c writeup

信息收集 arp-scan nmap 這里默認的話是只有80端口的&#xff0c;這個22端口是我拿到root后開的 獲取userFlag 直接上web看看 掃個目錄 把網頁拉到最下面可以看到一個文件上傳點 我們嘗試上傳一個php文件 失敗了&#xff0c;那xxx呢 上傳成功了&#xff0c;看來后端的后綴名…

【構建】CMake 構建系統重點內容

CMake 構建系統重點內容 1 基本語法與結構 cmake_minimum_required() 指定使用的最低 CMake 版本&#xff0c;防止不同版本行為不一致&#xff1a; cmake_minimum_required(VERSION 3.16)project() 定義項目名稱、語言和版本&#xff1a; project(MyApp VERSION 1.0 LANGU…

Packagerun:VSCode 擴展 快捷執行命令

Packagerun&#xff1a;VSCode 快捷命令擴展&#xff08;兼容cursor&#xff09; Packagerun 是一個為 前端和node開發者設計的 VSCode 擴展&#xff0c;旨在簡化 package.json 中腳本的執行&#xff0c;并支持自定義命令以提升開發效率。通過右鍵菜單、快捷鍵或自定義配置&am…

【C語言】計算機組成、計算機語言介紹

1.1 計算機組成 1946年2月14日&#xff0c;由美國軍方定制的世界上第一臺電子計算機“電子數字積分計算機”( ENIAC Electronic Numerical And Calculator)在美國賓夕法尼亞大學問世。 計算機(俗稱電腦)堪稱是人類智慧的結晶&#xff0c;隨著計算機的不斷發展&#xff0c;各行各…

(九)山東大學軟件學院項目實訓-基于大模型的模擬面試系統-面試對話標題自動總結

面試對話標題自動總結 主要實現思路&#xff1a;每當AI回復用戶之后&#xff0c;調用方法查看當前對話是否大于三條&#xff0c;如果大于則將用戶的兩條和AI回復的一條對話傳給DeepSeek讓其進行總結&#xff08;后端&#xff09;&#xff0c;總結后調用updateChatTopic進行更新…