国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java文件讀寫數(shù)據(jù)流

這篇具有很好參考價(jià)值的文章主要介紹了Java文件讀寫數(shù)據(jù)流。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.按照讀寫方式來分

以下這幾個(gè)類都是抽象類.并且都有對(duì)于文件操作的具體實(shí)現(xiàn)類.File+類名就是具體的實(shí)現(xiàn)類

1.1.二進(jìn)制方式讀寫

1.1.1.InputStream

以二進(jìn)制方式讀.有兩個(gè)主要方法.

1.read();

該方法有三個(gè)版本

  1. 無參: read() 讀取一個(gè)字節(jié)的數(shù)據(jù),返回 -1 表示讀取結(jié)束
  2. 一個(gè)參數(shù): read(byte[] b) 最多讀取 b.length 字節(jié)的數(shù)據(jù)到 b 中,返回值是實(shí)際讀到的數(shù)量;返回 -1 表示讀取結(jié)束.讀取到的內(nèi)容會(huì)存儲(chǔ)在傳入的數(shù)組參數(shù)中.
  3. 三個(gè)參數(shù): read(byte[] b, int off, int len) 最多讀取 (len-off)個(gè)字節(jié)的數(shù)據(jù)到 b 中,放在byte數(shù)組中,從 off 開始,返回實(shí)際讀到的數(shù)量;返回 -1 表示讀取結(jié)束.讀取到的內(nèi)容會(huì)存儲(chǔ)在傳入的數(shù)組參數(shù)中.
2.close();

關(guān)閉字節(jié)流.Java的數(shù)據(jù)流在使用結(jié)束時(shí)都需要手動(dòng)關(guān)閉字節(jié)流.否則長時(shí)間未關(guān)閉會(huì)產(chǎn)生內(nèi)存泄漏的危險(xiǎn).

1.1.2.OutputStream

以二進(jìn)制方式寫.有三個(gè)主要方法.默認(rèn)此操作每次都會(huì)清空舊的內(nèi)容.向內(nèi)部寫入新的內(nèi)容.如果需要追加需要添加參數(shù),

1.write();

該方法同樣有三個(gè)版本

  1. 一個(gè)int型的參數(shù): write(int b) 寫入一個(gè)字節(jié)
  2. 一個(gè)字節(jié)數(shù)組的參數(shù): write(byte[] b) 將 b 這個(gè)字符數(shù)組中的數(shù)據(jù)全部寫入 os 中
  3. 三個(gè)參數(shù): write(byte[] b, int off, int len) 將 b 這個(gè)字符數(shù)組中從 off 開始寫入 len 個(gè)長度的數(shù)據(jù)
2.close();

與InputStream流相同,使用結(jié)束需要關(guān)閉流.否則會(huì)產(chǎn)生危險(xiǎn).

3.flash();

清空緩存區(qū).

因?yàn)镮/O 的速度是很慢的,所以大多的 OutputStream 為了減少設(shè)備操作的次數(shù),就先將I/O內(nèi)容先寫到一片內(nèi)存中(緩沖區(qū)).等到緩沖區(qū)滿了,或者達(dá)成一定條件時(shí)才真正將數(shù)據(jù)寫入設(shè)備中.

這樣的操作提升了一定的效率,但造成一個(gè)后果.就是我們寫的數(shù)據(jù),很可能會(huì)遺留一部分在緩沖區(qū)中.所以我們就需要這樣一個(gè)操作.在合適的時(shí)候,讓緩沖區(qū)中的內(nèi)容全部寫入設(shè)備(清空緩沖區(qū)).

1.2.字符方式讀寫

用法和以字節(jié)讀寫類似,不同的是操作對(duì)象: 一個(gè)操作字節(jié),一個(gè)操作字符.

1.2.1.Reader

以字符方式讀.與InputStream類似.有 read()和close() 方法.并且用法也類似.

1.read();

該方法有三個(gè)版本

  1. 無參: read()
  2. 一個(gè)參數(shù): read(char[] b)
  3. 三個(gè)參數(shù): read(char[] b, int off, int len)
2.close();

關(guān)閉字符流.

1.2.2.Writer

以字符方式寫.與OutputStream類似.有 write(),close()和flash() 方法.并且用法也類似.

1.write();

該方法同樣有三個(gè)版本

  1. 一個(gè)int型的參數(shù): write(int b)
  2. 一個(gè)字符數(shù)組的參數(shù): write(char[] b)
  3. 三個(gè)參數(shù): write(char[] b, int off, int len)
2.close();

關(guān)閉字符流.

3.flash();

清空緩存區(qū).

2.具體的實(shí)現(xiàn)類

  1. FileInputStream
  2. FileOutputStream
  3. FIleReader
  4. FileWriter

2.1構(gòu)造方法

這幾個(gè)實(shí)現(xiàn)類的構(gòu)造方法類似.這里以FileInputStream為例.

  1. FileInputStream(File file) : 利用 File 構(gòu)造文件輸入流
  2. FileInputStream(String name) : 利用文件路徑構(gòu)造文件輸入流

需要注意的是,這幾個(gè)寫入流都是清空原有文件數(shù)據(jù),重新寫入新的數(shù)據(jù).如果想要追加數(shù)據(jù)的話.需要在構(gòu)造方法參數(shù)后面添加true.

FileOutputStream(String name,boolean bo);這里的第二個(gè)參數(shù)為true時(shí)就是向文件中追加內(nèi)容.文章來源地址http://www.zghlxwxcb.cn/news/detail-600418.html

3.復(fù)制文件案例

import java.io.*;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入要拷貝的源路徑");
        String src = scanner.next();
        System.out.println("請輸入要拷貝的目標(biāo)路徑");
        String dest = scanner.next();

        File srcFile = new File(src);
        if (!srcFile.isFile()) {
            System.out.println("輸入源路徑有誤");
            return;
        }

        try (InputStream inputStream = new FileInputStream(src)) {
            try (OutputStream outputStream = new FileOutputStream(dest)) {
                byte[] buffer = new byte[1024];
                while (true) {
                    int len = inputStream.read(buffer);
                    if (len == -1) {
                        break;
                    }
                    outputStream.write(buffer, 0, len);
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

到了這里,關(guān)于Java文件讀寫數(shù)據(jù)流的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【LeetCode】劍指 Offer 41. 數(shù)據(jù)流中的中位數(shù) p214 -- Java Version

    【LeetCode】劍指 Offer 41. 數(shù)據(jù)流中的中位數(shù) p214 -- Java Version

    題目鏈接 :https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof 如何得到一個(gè)數(shù)據(jù)流中的中位數(shù)?如果從數(shù)據(jù)流中讀出奇數(shù)個(gè)數(shù)值,那么中位數(shù)就是所有數(shù)值排序之后位于中間的數(shù)值。如果從數(shù)據(jù)流中讀出偶數(shù)個(gè)數(shù)值,那么中位數(shù)就是所有數(shù)值排序之后中間兩個(gè)數(shù)的平均值。

    2023年04月08日
    瀏覽(24)
  • 深度解析Java JDK 1.8中Stream流的源碼實(shí)現(xiàn):帶你探尋數(shù)據(jù)流的奧秘

    深度解析Java JDK 1.8中Stream流的源碼實(shí)現(xiàn):帶你探尋數(shù)據(jù)流的奧秘

    1.1 什么是Stream流,以及它的主要特點(diǎn)和優(yōu)勢 什么是Stream流 ? jdk1.8 中引入的Stream流是一種用 函數(shù)式編程方式 操作集合的新特性,提供了一種更簡潔、高效的方式來處理集合數(shù)據(jù),可以將集合操作轉(zhuǎn)換為一系列的流水線操作,實(shí)現(xiàn)更加優(yōu)雅和功能強(qiáng)大的數(shù)據(jù)處理。 主要特點(diǎn)

    2024年03月16日
    瀏覽(37)
  • nginx 轉(zhuǎn)發(fā)數(shù)據(jù)流文件

    nginx 轉(zhuǎn)發(fā)數(shù)據(jù)流文件

    1.問題描述 后端服務(wù),從數(shù)據(jù)庫中查詢?nèi)罩?,并生成表格文件返回靜態(tài)文件。當(dāng)數(shù)據(jù)量幾兆時(shí),返回正常,但是超過幾十兆,幾百兆,就會(huì)超過網(wǎng)關(guān)的連接超時(shí)時(shí)間30秒。 時(shí)序圖 ?這里面主要花費(fèi)時(shí)間的地方在: 1后臺(tái)服務(wù)器,將數(shù)據(jù)格式化,寫到本地的文件的過程 2后臺(tái)服務(wù)

    2024年02月06日
    瀏覽(29)
  • 后端返回?cái)?shù)據(jù)流,前端進(jìn)行轉(zhuǎn)換blob文件流

    后端返回?cái)?shù)據(jù)流,前端進(jìn)行轉(zhuǎn)換blob文件流

    1. 首先相應(yīng)的頭里面請求改為 responseType: \\\'blob\\\' 2.? ?????????let res = await getPhotoVideoUrl() --此處為模擬的獲取一個(gè)視頻流的地址; ? ? ? ? const img = new Blob([res], { type: \\\'image/png\\\' }); ? ? ? ? let imgUrl = window.URL.createObjectURL(img); 3.拿到流的地址后,先進(jìn)行new Blob進(jìn)行創(chuàng)建一個(gè)對(duì)象。

    2024年02月13日
    瀏覽(22)
  • <JavaEE> 文件IO -- 數(shù)據(jù)流和文件內(nèi)容操作(Reader 和 Writer 、InputStream 和 OutputStream)

    目錄 一、數(shù)據(jù)流概述 二、流的關(guān)閉 2.1 使用 close() 方法 2.2 使用 try-finally 2.3 使用?try-with-resources 三、字符流的讀寫 3.1 Reader 類 3.2 Writer 類 四、字節(jié)流的讀寫 4.1?InputStream?類 4.2?OutputStream?類 1)在 Java 中,文件的操作分為兩類 操作文件系統(tǒng) 通過 File 類,在系統(tǒng)中進(jìn)行增、刪

    2024年02月04日
    瀏覽(26)
  • 什么是Vue的數(shù)據(jù)流(單向數(shù)據(jù)流)?如何進(jìn)行數(shù)據(jù)流管理

    什么是Vue的數(shù)據(jù)流(單向數(shù)據(jù)流)?如何進(jìn)行數(shù)據(jù)流管理

    在Vue中,數(shù)據(jù)流是指數(shù)據(jù)的傳遞和管理方式。Vue采用的是單向數(shù)據(jù)流,也就是說,數(shù)據(jù)是從父組件流向子組件,子組件不能直接修改父組件的數(shù)據(jù)。本文將介紹Vue的數(shù)據(jù)流機(jī)制,以及如何進(jìn)行數(shù)據(jù)流管理。 Vue的數(shù)據(jù)流機(jī)制可以分為兩類:props和events。 Props 在Vue中,父組件可以

    2024年02月08日
    瀏覽(20)
  • 銀行儲(chǔ)蓄系統(tǒng)的頂層數(shù)據(jù)流圖及細(xì)化數(shù)據(jù)流圖

    銀行儲(chǔ)蓄系統(tǒng)的頂層數(shù)據(jù)流圖及細(xì)化數(shù)據(jù)流圖

    繪制出銀行儲(chǔ)蓄系統(tǒng)的頂層數(shù)據(jù)流圖及細(xì)化數(shù)據(jù)流圖; 銀行儲(chǔ)蓄系統(tǒng)存、取款流程如下: 1)業(yè)務(wù)員事先錄入利率信息; 2)如果是存款,儲(chǔ)戶填寫存款單,業(yè)務(wù)員將存款單鍵入系統(tǒng),系統(tǒng)更新儲(chǔ)戶存款信息(存款人姓名、存款人賬號(hào)、電話號(hào)碼、身份證號(hào)碼、存款金額、存

    2024年01月17日
    瀏覽(22)
  • Elasticsearch:將 ILM 管理的數(shù)據(jù)流遷移到數(shù)據(jù)流生命周期

    Elasticsearch:將 ILM 管理的數(shù)據(jù)流遷移到數(shù)據(jù)流生命周期

    警告 :此功能處于技術(shù)預(yù)覽階段,可能會(huì)在未來版本中更改或刪除。 Elastic 將努力解決任何問題,但技術(shù)預(yù)覽版中的功能不受官方 GA 功能的支持 SLA 的約束。目前的最新版本為 8.12。 在本教程中,我們將了解如何將現(xiàn)有數(shù)據(jù)流(data stream)從索引生命周期管理 (ILM) 遷移到數(shù)據(jù)

    2024年04月29日
    瀏覽(28)
  • Flink數(shù)據(jù)流

    Flink數(shù)據(jù)流

    官網(wǎng)介紹 Apache Flink 是一個(gè)框架和分布式處理引擎,用于對(duì)無界和有界數(shù)據(jù)流進(jìn)行有狀態(tài)計(jì)算。Flink 被設(shè)計(jì)為在所有常見的集群環(huán)境中運(yùn)行,以內(nèi)存中的速度和任何規(guī)模執(zhí)行計(jì)算。 1.無限流有一個(gè)開始,但沒有定義的結(jié)束。它們不會(huì)在生成數(shù)據(jù)時(shí)終止并提供數(shù)據(jù)。必須連續(xù)處

    2024年02月17日
    瀏覽(20)
  • postman 數(shù)據(jù)流請求

    postman 數(shù)據(jù)流請求

    備注: Postman version : Version 9.21.3 Windows 版本 1.修改headers 2.Body 部分 選擇raw 格式數(shù)據(jù) 3.最后執(zhí)行請求

    2024年02月11日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包