大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 實例解析IO字節流

實例解析IO字節流

更新時間:2020-11-19 17:32:23 來源:動力節點 瀏覽1014次

從流的內容來講,有字節和字符之分。顧名思義,字節流是由字節組成的,字符流是由字符組成的。IO字節流是Java IO流中非常重要的一種IO流,本文我們就通過實例一起來學習IO字節流


IO字節流主要是操作byte類型數據,以byte數組為準,主要操作類就是OutputStream、InputStream。


一、字節輸出流:OutputStream

OutputStream是整個IO包中字節輸出流的最大父類,此類的定義如下:

public abstract class OutputStream extends Object implements Closeable,Flushable

從以上的定義可以發現,此類是一個抽象類,如果想要使用此類的話,則首先必須通過子類實例化對象,那么如果現在要操作的是一個文件,則可以使用:FileOutputStream類。通過向上轉型之后,可以為OutputStream實例化

Closeable表示可以關閉的操作,因為程序運行到最后肯定要關閉

Flushable:表示刷新,清空內存中的數據

FileOutputStream類的構造方法如下:

public FileOutputStream(File file)throws FileNotFoundException

寫數據:

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

public class Test11 {

public static void main(String[] args) throws IOException {

File f = new File("d:" + File.separator+"test.txt");

OutputStream out=new FileOutputStream(f);//如果文件不存在會自動創建

String str="Hello World";

byte[] b=str.getBytes();

out.write(b);//因為是字節流,所以要轉化成字節數組進行輸出

out.close();

}

}

也可以一個字節一個字節進行輸出,如下:

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

public class Test11 {

public static void main(String[] args) throws IOException {

File f = new File("d:" + File.separator+"test.txt");

OutputStream out=new FileOutputStream(f);//如果文件不存在會自動創建

String str="Hello World";

byte[] b=str.getBytes();

for(int i=0;i<b.length;i++){< p="">

out.write(b[i]);

}

out.close();

}

}


以上輸出只會進行覆蓋,如果要追加的話,請看FileOutputStream類的另一個構造方法:

public FileOutputStream(File file,boolean append)throws FileNotFoundException

在構造方法中,如果將append的值設置為true,則表示在文件的末尾追加內容。

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

public class Test11 {

public static void main(String[] args) throws IOException {

File f = new File("d:" + File.separator+"test.txt");

OutputStream out=new FileOutputStream(f,true);//追加內容

String str="\r\nHello World";

byte[] b=str.getBytes();

for(int i=0;i<b.length;i++){< p="">

out.write(b[i]);

}

out.close();

}

}

文件中換行為:\r\n


二、字節輸入流:InputStream

既然程序可以向文件中寫入內容,則就可以通過InputStream從文件中把內容讀取進來,首先來看InputStream類的定義:

public abstract class InputStream extends Object implements Closeable

與OutputStream類一樣,InputStream本身也是一個抽象類,必須依靠其子類,如果現在是從文件中讀取,就用FileInputStream來實現。

觀察FileInputStream類的構造方法:

public FileInputStream(File file)throws FileNotFoundException

讀文件:

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

public class Test12 {

public static void main(String[] args) throws IOException {

File f = new File("d:" + File.separator+"test.txt");

InputStream in=new FileInputStream(f);

byte[] b=new byte[1024];

int len=in.read(b);

in.close();

System.out.println(new String(b,0,len));

}

}


但以上方法是有問題的,用不用開辟這么大的一個字節數組,明顯是浪費嘛,我們可以根據文件的大小來定義字節數組的大小,File類中的方法:public long length()

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

public class Test13 {

public static void main(String[] args) throws IOException {

File f = new File("d:" + File.separator+"test.txt");

InputStream in=new FileInputStream(f);

byte[] b=new byte[(int) f.length()];

in.read(b);

in.close();

System.out.println(new String(b));

}

}

我們換種方式,一個字節一個字節讀入~

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

public class Test14 {

public static void main(String[] args) throws IOException {

File f = new File("d:" + File.separator+"test.txt");

InputStream in=new FileInputStream(f);

byte[] b=new byte[(int) f.length()];

for(int i=0;i<b.length;i++){< p="">

b[i]=(byte) in.read();

}

in.close();

System.out.println(new String(b));

}

}

但以上情況只適合知道輸入文件的大小,不知道的話用如下方法:

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

public class Test15 {

public static void main(String[] args) throws IOException {

File f = new File("d:" + File.separator+"test.txt");

InputStream in=new FileInputStream(f);

byte[] b=new byte[1024];

int temp=0;

int len=0;

while((temp=in.read())!=-1){//-1為文件讀完的標志

b[len]=(byte) temp;

len++;

}

in.close();

System.out.println(new String(b,0,len));

}

}


實際上IO字節流和IO字符流的使用是非常相似的,但字節流在操作的時候本身是不會用到緩沖區(內存)的,是與文件本身直接操作的,而字符流在操作的時候是使用到緩沖區的。學完了IO字節流,想要學習IO字符流的小伙伴可以觀看本站的Java教程學習,對比兩種IO流我們學習起來也能事半功倍哦。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 777奇米影视色888成人 | 亚洲精品日本高清中文字幕 | 日本不卡视频在线观看 | 四虎+网站+影院+网站 | 国产精品视频九九九 | 国产高清在线精品一区免费97 | 成人交性视频免费看 | 欧美80岁老妇一级毛片 | 欧美日韩国产一区二区三区播放 | 日日日影院 | 91视频久久久久 | 亚洲五月综合网色九月色 | 日本免费不卡一区 | 国产精品亚洲片在线观看麻豆 | 国产一区二区三区在线观看视频 | 国产精品久久久久久影院 | 欧美日韩精品一区三区 | 精精国产www视频在线观看免费 | 亚洲国产一区二区三区四区五区 | 日韩一中文字幕 | 婷婷在线免费视频 | 日本不卡一区二区三区 最新 | 成人不卡在线 | 中文字幕专区高清在线观看 | 国产欧美亚洲精品第一区 | 日本激情啪啪 | 香港三级做爰大爽视频 | 99热99re8国产在线播放 | 亚洲精品成人7777在线观看 | 久久婷婷午色综合夜啪 | 久久精品国产99久久 | 不卡的在线视频免费观看 | 欧美日韩中文一区二区三区 | 国产香蕉精品视频 | 国产精品96久久久久久久 | 青草伊伊| 99热久久国产这里是精品 | 日本又黄又爽又色的免费视频 | 久久久久久噜噜噜久久久精品 | a国产精品 | 久久国产一区二区三区 |