最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java FileOutputStream輸出流的使用解讀

 更新時間:2022年12月26日 09:18:28   作者:李昕羽  
這篇文章主要介紹了java FileOutputStream輸出流的使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

FileOutputStream的構造方法

FileOutputStream提供了4個常用構造方法,用于實例化FileOutputStream對象,

不同的場景使用不同的構造方法。

場景1

使用File對象打開本地文件,從文件讀取數(shù)據(jù)。

public FileOutputStream(File file) throws FileNotFoundException{}

查看底層源碼發(fā)現(xiàn)該構造方法實際是調用了另一個構造方法

public FileOutputStream(File file) throws FileNotFoundException {
? ? ? ? this(file, false);
? ? }

場景2

不使用File對象,直接傳入文件路徑。

public FileOutputStream(String name) throws FileNotFoundException{}

FileOutputStream的構造方法允許直接傳入文件路徑,而無須使用File對象。查看該構造方法的源代碼,其內部使用了File對象打開文件。

場景3

打開文件,在文件的尾部追加寫入數(shù)據(jù)。

場景要求在文件的尾部寫入數(shù)據(jù),由于前面兩個構造函數(shù)都是文件開始寫入數(shù)據(jù)(覆蓋原文件),因此不能使用前面2個場景的構造函數(shù)。FileOutputStream提供了另外兩個構構造方法,分別是:

public FileOutputStream(File file,boolean append) throws FileNotFoundException{}

public FileOutputStream(String name,boolean append) throws FileNotFoundException{}

同前面的構造方法相比,這兩個構造方法各多了一個boolean參數(shù)append。

append參數(shù)為true時,數(shù)據(jù)從文件尾部寫入;append參數(shù)為false時,數(shù)據(jù)覆蓋原文件。

這也是第一個方法調用的那個方法

FileOutputStream的寫入方法

FileOutputStream類提供了多種文件寫入方法,可以單獨寫一個字節(jié)到文件,

也可以寫一個byte數(shù)組到文件,也可以取byte數(shù)組的部分數(shù)據(jù)寫入到文件。

例1

使用write(int b)方法寫入文件。

package com.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo {
? ? public static void main(String[] args) throws IOException {
? ? ? ? File file = new File("d://new.txt");
? ? ? ? try {
? ? ? ? ? ? file.createNewFile();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? try {
? ? ? ? ? ? FileOutputStream fileOutputStream = new FileOutputStream(file);
? ? ? ? ? ? String str = "this is new file";
? ? ? ? ? ? for (int i = 0; i < str.length(); i++) {
? ? ? ? ? ? ? ? int b = (int)str.charAt(i);
? ? ? ? ? ? ? ? fileOutputStream.write(b);
? ? ? ? ? ? }

? ? ? ? } catch (FileNotFoundException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }

? ? }
}

例子程序首先調用File類的createNewFile()創(chuàng)建new.txt文件,然后將str內容寫入到新創(chuàng)建的new.txt文件中。

例2

使用write(byte[] b)方法寫入文件。

write(byte[] b)方法用于將b.length個字節(jié)從指定的byte數(shù)組寫入到輸出流。

String類的getBytes()方法可以將字符串轉換為byte數(shù)組,使用FileOutputStream 類的write(byte[] b)方法,將轉換的byte數(shù)組寫入文件。

package com.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo {
? ? public static void main(String[] args) throws IOException {
? ? ? ? File file = new File("d://new.txt");
? ? ? ? try {
? ? ? ? ? ? file.createNewFile();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? try {
? ? ? ? ? ? FileOutputStream fileOutputStream = new FileOutputStream(file);
? ? ? ? ? ? String str = "this is new file";
? ? ? ? ? ? fileOutputStream.write(str.getBytes());
? ? ? ? } catch (FileNotFoundException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }

? ? }
}

例3

使用write(byte[] b,int off,int len)方法寫入文件。

該方法將len個字節(jié)的數(shù)據(jù),并從數(shù)組b的off位置開始寫入到輸出流。

package com.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Demo {
? ? public static void main(String[] args) throws IOException {
? ? ? ? File file = new File("d://new.txt");
? ? ? ? try {
? ? ? ? ? ? file.createNewFile();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? try {
? ? ? ? ? ? FileOutputStream fileOutputStream = new FileOutputStream(file);
? ? ? ? ? ? String str = "this is new file";
? ? ? ? ? ? fileOutputStream.write(str.getBytes(),5,11);
? ? ? ? } catch (FileNotFoundException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }

? ? }
}

程序把指定的str內容寫入到文件,fos.write(str.getBytes(),5,10)語句的第一個參數(shù)為byte數(shù)組,第二個參數(shù)5是從byte數(shù)組的下標5開始,第三個參數(shù)是寫入的字節(jié)數(shù)。程序執(zhí)行后,寫入的內容為“is new file”。

使用該方法一定要注意數(shù)組越界的問題。例如,byte數(shù)組長度為20,從第下標12開始,寫入15個字節(jié)到文件,就會造成數(shù)組越界,程序報錯。

例4

使用FileOutputStream復制文件

package com.demo;

import java.io.*;

public class Demo {
? ? public static void main(String[] args) {
? ? ? ? File source = new File("d://new.txt");
? ? ? ? File dest = new File("d://new2.txt");
? ? ? ? copy(source,dest);
? ? }


? ? public static void copy(File sor, File dest){
? ? ? ? if(!sor.exists()){
? ? ? ? ? ? System.out.println("源文件不存在");
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? try {
? ? ? ? ? ? FileInputStream in = new FileInputStream(sor);
? ? ? ? ? ? FileOutputStream out = new FileOutputStream(dest);
? ? ? ? ? ? byte[] buf = new byte[in.available()];
? ? ? ? ? ? in.read(buf);
? ? ? ? ? ? out.write(buf);
? ? ? ? ? ? out.flush();
? ? ? ? ? ? out.close();
? ? ? ? ? ? in.close();

? ? ? ? } catch (FileNotFoundException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}

復制文件是將源文件數(shù)據(jù)寫入到新文件,在實際編程中,實現(xiàn)文件的復制有很多種方法,本案例使用FileInputStream和FileOutputStream實現(xiàn)文件的復制。

java中的IO流中的輸出流一般都有flush這個操作,這個操作的作用是強制將緩存中的輸出流(字節(jié)流,字符流等)強制輸出。

為什么會有這么個方法?。?/strong>

因為輸出流在進行輸出時,比如像某個文件中寫入內容,其實是先將輸出流寫入到緩沖區(qū),當緩沖區(qū)寫滿后才將緩沖區(qū)的內容輸出到文件中。但是當主機完成輸出流的輸出后,有可能緩沖區(qū)這個時候還沒有被填滿,這

樣的話,就會一直等待主機發(fā)送內容,這時候,就可以使用flush將緩沖區(qū)的內容強制輸出到文件中,清空緩沖區(qū)。

所以,一般在關閉輸出流之前,要先調用flush方法強制緩沖區(qū)中的內容輸出,并清空緩沖區(qū)。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 解決IDEA使用springBoot創(chuàng)建項目,lombok標注實體類后編譯無報錯,但是運行時報錯問題

    解決IDEA使用springBoot創(chuàng)建項目,lombok標注實體類后編譯無報錯,但是運行時報錯問題

    文章詳細描述了在使用lombok的@Data注解標注實體類時遇到編譯無誤但運行時報錯的問題,分析了可能的原因,并提供了解決步驟
    2025-01-01
  • java控制臺打印本月的日歷

    java控制臺打印本月的日歷

    這篇文章主要為大家詳細介紹了java控制臺打印本月的日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • SpringBoot如何讀取配置文件中的數(shù)據(jù)到map和list

    SpringBoot如何讀取配置文件中的數(shù)據(jù)到map和list

    這篇文章主要介紹了SpringBoot如何讀取配置文件中的數(shù)據(jù)到map和list,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java 類與對象詳細

    Java 類與對象詳細

    這篇文章主要介紹了Java 類與對象,在Java中,我們把對象的特征稱為屬性,對象的用途稱為方法,具有相同屬性和方法的對象,我們把他們歸為一類,簡稱類。下面文章講詳細介紹什么是Java類與對象,需要的朋友可以參考一下
    2021-10-10
  • 詳解DES加密算法及在Java程序中的使用示例

    詳解DES加密算法及在Java程序中的使用示例

    這篇文章主要介紹了詳解DES加密算法及在Java程序中的使用示例,文中還有一個用Java實現(xiàn)的DES三重加密的例子,需要的朋友可以參考下
    2016-04-04
  • Spring IOC相關注解運用(上篇)

    Spring IOC相關注解運用(上篇)

    這篇文章主要介紹了Spring?IOC相關注解的運用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • SpringCloud Finchley Gateway 緩存請求Body和Form表單的實現(xiàn)

    SpringCloud Finchley Gateway 緩存請求Body和Form表單的實現(xiàn)

    在接入Spring-Cloud-Gateway時,可能有需求進行緩存Json-Body數(shù)據(jù)或者Form-Urlencoded數(shù)據(jù)的情況。這篇文章主要介紹了SpringCloud Finchley Gateway 緩存請求Body和Form表單的實現(xiàn),感興趣的小伙伴們可以參考一下
    2019-01-01
  • 純Java實現(xiàn)數(shù)字證書生成簽名的簡單實例

    純Java實現(xiàn)數(shù)字證書生成簽名的簡單實例

    下面小編就為大家?guī)硪黄僇ava實現(xiàn)數(shù)字證書生成簽名的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Java與Mysql鎖相關知識總結

    Java與Mysql鎖相關知識總結

    這篇文章主要介紹了Java與Mysql鎖相關知識總結的相關資料,需要的朋友可以參考下
    2023-04-04
  • 一文詳解Java中的反射與new創(chuàng)建對象

    一文詳解Java中的反射與new創(chuàng)建對象

    Java中的反射(Reflection)和使用new關鍵字創(chuàng)建對象是兩種不同的對象創(chuàng)建方式,各有優(yōu)缺點和適用場景,本文小編給大家詳細介紹了Java中的反射與new創(chuàng)建對象,感興趣的小伙伴跟著小編一起來看看吧
    2024-07-07

最新評論

固安县| 华宁县| 崇左市| 潮安县| 宁远县| 井陉县| 布尔津县| 宜宾市| 乌恰县| 太保市| 隆子县| 高要市| 穆棱市| 凤冈县| 临猗县| 四平市| 施甸县| 双鸭山市| 平湖市| 温州市| 嘉黎县| 高碑店市| 邵阳市| 长治县| 东阳市| 罗田县| 阿克陶县| 林口县| 常熟市| 弥渡县| 苗栗市| 仙游县| 抚远县| 额济纳旗| 呼和浩特市| 金山区| 武平县| 尉氏县| 收藏| 阿城市| 四平市|