30天學Java第7天——IO流

概述

基本概念

在這里插入圖片描述

  1. 輸入流:從硬盤到內存。(輸入又叫做 讀 read)
  2. 輸出流:從內存到硬盤。(輸出又叫做 寫 write)
  3. 字節流:一次讀取一個字節。適合非文本數據,它是萬能的,啥都能讀。
  4. 字符流:一次讀取一個字符。只適合讀取普通文本。

Java 中所有 IO 流中凡是以 Stream 結尾的都是字節流。凡是 Read 和 Writer 結尾的都是字符流。

體系結構

在這里插入圖片描述

  • 四大頭領(都是抽象類)
    • InputStream
    • OutStream
    • Reader
    • Writer
  • File 相關的
    • FileInputStream
    • FileOutputStream
    • FileReader
    • FileWriter
  • 緩沖流相關的
    • BufferedInputStream
    • BufferedOutputStream
    • BufferedReader
    • BufferedWriter
  • 轉換流相關的
    • InputStreamReader
    • OutputStreamWriter
  • 打印流相關的
    • PrintStream
    • PirntWriter
  • 對象相關的
    • ObjectInputStream
    • ObjectOutputStream
  • 數據類型相關的
    • DataInputStream
    • DataOutputStream
  • 字節數組相關的
    • ByteArrayInputStream
    • ByteArrayOutputStream
  • 壓縮解壓縮相關的
    • GZIPInputStream
    • GZIPOutputStream
  • 線程相關的
    • PipedInputStream
    • PipedOutputStream
  1. 所有的流都實現了 Closeable 接口,都有 close() 方法,流用完要關閉。
  2. 所有的輸出流都實現了 Flushable 接口,都有 flush() 方法,flush 方法的作用是將緩存清空,全部寫出。

各種流的詳解

文件輸入輸出流 FileInputStream & FileOutputStream

FileInputStream
  1. 構造方法之一
    FileInputStream (Stirng s)
    在這里插入圖片描述

  2. 普通方法

    • read()
      返回文件中的第一個字節本身(ascii碼),讀一次往后移一個字節,如果讀不到任何數據就返回 -1
    • read(byte[] b)
      一次最多可以讀取到 b.length 個字節,返回值是讀取到的字節數量,如果每讀到任何數據就返回 -1
    • read(byte[] b, int off, int len)
      一次最多讀 len 個字節,并且從 byte 數組的第 off 位置開始存
    • skip(long n)
      跳過流中的 n 個字節后讀取
    • available()
      返回流中剩余的字節數
      在這里插入圖片描述
FileOutputStream
  1. 構造方法
    在這里插入圖片描述
    FileOutputStream(String name, boolean append)
    如果 append == false,則在第一次建立流時將源文件的內容清空
    如果 append == true,則通過追加的方式寫入
  2. 普通方法
    在這里插入圖片描述

FileReader & FileWriter 與 FileInputStream & FileOutputStream使用方式類似,只是字符流的使用 char[ ] 存儲,還可以直接寫入字符串

// FileWriter 測試代碼
try (FileWriter fw = new FileWriter("C:\\Users\\win\\Desktop\\111.txt")) {fw.write("hello");fw.write("world", 1, 2);fw.write("hello".toCharArray(), 0, 2);fw.write("hello".toCharArray());} catch (IOException e) {throw new RuntimeException(e);
}
try-with-resource

下面這種形式的流是 try-with-resource 語法,不需要手動寫 close() 了,資源會自動關閉。因為所有的流都實現了 Closeable 接口的父接口 AutoCloseable 接口,都可以使用 try-with-resource 語法。

try(1;2){操作代碼;
}catchException e){}

注:本文章源于學習動力節點老杜的java教程視頻后的筆記整理,方便自己復習的同時,也希望能給csdn的朋友們提供一點幫助。

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

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

相關文章

面試可能會遇到的問題回答(嵌入式軟件開發部分)

寫在前面: 博主也是剛入社會的小牛馬,如果下面有寫的不好或者寫錯的地方歡迎大家指出~ 一、四大件基礎知識 1、計算機組成原理 (1)簡單介紹一下中斷是什么。 ①回答: ②難度系數:★★ ③難點分析&…

層歸一化詳解及在 Stable Diffusion 中的應用分析

在深度學習中,歸一化(Normalization)技術被廣泛用于提升模型訓練的穩定性和收斂速度。本文將詳細介紹幾種常見的歸一化方式,并重點分析它們在 Stable Diffusion 模型中的實際使用場景。 一、常見的歸一化技術 名稱歸一化維度應用…

深入理解Socket編程:構建簡單的計算器服務器

一、Socket通信基礎 1. Socket通信基本流程 服務器端流程: 創建Socket (socket()) 綁定地址和端口 (bind()) 監聽連接 (listen()) 接受連接 (accept()) 數據通信 (read()/write()) 關閉連接 (close()) 客戶端流程: 創建Socket (socket()) 連接…

Redis-x64-3.2.100.msi : Windows 安裝包(MSI 格式)安裝步驟

Redis-x64-3.2.100.msi 是 Redis 的 Windows 安裝包(MSI 格式),適用于 64 位系統。 在由于一些環境需要低版本的Redis的安裝包。 Redis-x64-3.2.100.msi 安裝包下載:https://pan.quark.cn/s/cc4d38262a15 Redis 是一個開源的 內…

4.7正則表達式

1.字符匹配 一般字符匹配自身. 匹配任意字符(換行符\n除外),一個點占一位\轉義字符,使其后一個字符改變原來的意思(\.就是.)[......]字符集,對應的位置可以是字符集中的任意字符.字符集中的字符可以逐個列出,也可以給出范圍如[abc]或[a-c] [^abc] 表示取反&#xf…

Fortran 中讀取 MATLAB 生成的數據文件

在 Fortran 中讀取 MATLAB 生成的數據文件,可以通過以下幾種方法實現,包括使用開源工具和手動解析: 1. 使用開源工具:MATFOR MATFOR 是一個商業/開源混合工具(部分功能免費),提供 Fortran 與 M…

壓測工具開發實戰篇(四)——client子窗口功能

你好,我是安然無虞。 文章目錄 樹控件添加文件補充學習: 函數定義中循環體里的局部變量補充學習: 動態添加對象屬性 刷新文件上下文菜單 (右鍵菜單)實現右鍵菜單功能 編輯節點文本 在學習本篇文章之前, 建議先看一下上篇介紹MDI子窗口的文章: 壓測工具開發實戰篇(三…

PyTorch使用(4)-張量拼接操作

文章目錄 張量拼接操作1. torch.cat 函數的使用1.1. torch.cat 定義1.2. 語法1.3. 關鍵規則 1.4. 示例代碼1.4.1. 沿行拼接(dim0)1.4.2. 沿列拼接(dim1)1.4.3. 高維拼接(dim2) 1.5. 錯誤場景分析1.5.1. 維度…

linux命令之yes(Linux Command Yes)

linux命令之yes 簡介與功能 yes 命令在 Linux 系統中用于重復輸出一行字符串,直到被殺死(kill)。該命令最常見的用途是自動化控制腳本中的交互式命令,以便無需用戶介入即可進行連續的確認操作。 用法示例 基本用法非常簡單&am…

《算法筆記》10.3小節——圖算法專題->圖的遍歷 問題 B: 連通圖

題目描述 給定一個無向圖和其中的所有邊&#xff0c;判斷這個圖是否所有頂點都是連通的。 輸入 每組數據的第一行是兩個整數 n 和 m&#xff08;0<n<1000&#xff09;。n 表示圖的頂點數目&#xff0c;m 表示圖中邊的數目。如果 n 為 0 表示輸入結束。隨后有 m 行數據…

使用Prometheus監控systemd服務并可視化

實訓背景 你是一家企業的運維工程師&#xff0c;需將服務器的systemd服務監控集成到Prometheus&#xff0c;并通過Grafana展示實時數據。需求如下&#xff1a; 數據采集&#xff1a;監控所有systemd服務的狀態&#xff08;運行/停止&#xff09;、資源占用&#xff08;CPU、內…

OpenCV--圖像邊緣檢測

在計算機視覺和圖像處理領域&#xff0c;邊緣檢測是極為關鍵的技術。邊緣作為圖像中像素值發生急劇變化的區域&#xff0c;承載了圖像的重要結構信息&#xff0c;在物體識別、圖像分割、目標跟蹤等眾多應用場景中發揮著核心作用。OpenCV 作為強大的計算機視覺庫&#xff0c;提供…

Rollup詳解

Rollup 是一個 JavaScript 模塊打包工具&#xff0c;專注于 ES 模塊的打包&#xff0c;常用于打包 JavaScript 庫。下面從它的工作原理、特點、使用場景、配置和與其他打包工具對比等方面進行詳細講解。 一、 工作原理 Rollup 的核心工作是分析代碼中的 import 和 export 語句…

Chapter 7: Compiling C++ Sources with CMake_《Modern CMake for C++》_Notes

Chapter 7: Compiling C Sources with CMake 1. Understanding the Compilation Process Key Points: Four-stage process: Preprocessing → Compilation → Assembly → LinkingCMake abstracts low-level commands but allows granular controlToolchain configuration (c…

5分鐘上手GitHub Copilot:AI編程助手實戰指南

引言 近年來&#xff0c;AI編程工具逐漸成為開發者提升效率的利器。GitHub Copilot作為由GitHub和OpenAI聯合推出的智能代碼補全工具&#xff0c;能夠根據上下文自動生成代碼片段。本文將手把手教你如何快速安裝、配置Copilot&#xff0c;并通過實際案例展示其強大功能。 一、…

謝志輝和他的《韻之隊詩集》:探尋生活與夢想交織的詩意世界

大家好&#xff0c;我是謝志輝&#xff0c;一個扎根在文字世界&#xff0c;默默耕耘的寫作者。寫作于我而言&#xff0c;早已不是簡單的愛好&#xff0c;而是生命中不可或缺的一部分。無數個寂靜的夜晚&#xff0c;當世界陷入沉睡&#xff0c;我獨自坐在書桌前&#xff0c;伴著…

Logo語言的死鎖

Logo語言的死鎖現象研究 引言 在計算機科學中&#xff0c;死鎖是一個重要的研究課題&#xff0c;尤其是在并發編程中。它指的是兩個或多個進程因爭奪資源而造成的一種永久等待狀態。在編程語言的設計與實現中&#xff0c;如何避免死鎖成為了優化系統性能和提高程序可靠性的關…

深入理解矩陣乘積的導數:以線性回歸損失函數為例

深入理解矩陣乘積的導數&#xff1a;以線性回歸損失函數為例 在機器學習和數據分析領域&#xff0c;矩陣微積分扮演著至關重要的角色。特別是當我們涉及到優化問題&#xff0c;如最小化損失函數時&#xff0c;對矩陣表達式求導變得必不可少。本文將通過一個具體的例子——線性…

real_time_camera_audio_display_with_animation

視頻錄制 import cv2 import pyaudio import wave import threading import os import tkinter as tk from PIL import Image, ImageTk # 視頻錄制設置 VIDEO_WIDTH = 640 VIDEO_HEIGHT = 480 FPS = 20.0 VIDEO_FILENAME = _video.mp4 AUDIO_FILENAME = _audio.wav OUTPUT_…

【Pandas】pandas DataFrame astype

Pandas2.2 DataFrame Conversion 方法描述DataFrame.astype(dtype[, copy, errors])用于將 DataFrame 中的數據轉換為指定的數據類型 pandas.DataFrame.astype pandas.DataFrame.astype 是一個方法&#xff0c;用于將 DataFrame 中的數據轉換為指定的數據類型。這個方法非常…