日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java io流操作_【Java基础】IO流操作

發布時間:2024/8/23 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java io流操作_【Java基础】IO流操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、IO流概念: 輸入輸出流,也就是可以用來讀寫數據,以及上傳下載數據。

二、分類:

1、從流的對象來分: ? 1)高端流:所有程序或者內存中的流都稱為高端流。

2)低端流:所有外界設備中的流都是低端流。

如何區分到底是高端流還是低端流:

一般來說流的對象的后綴包含reader或者writer一般都是高端流,否則是低端流。(除了PrintStream,PrintStream也是高端流)

2、從數據的流向來分: ? 1)輸入流:從外界設備-->程序,也就是讀數據的動作。

2)輸出流:從程序-->外界設備,也就是寫數據的動作。

3、從數據的格式來分: ? 1)字節流:是用來處理聲音或者圖片等等二進制信息的流。

2)字符流:用來處理字符數據的流。

4、從流的對象是否需要包裝來分: ? 1)原始流:流在實例化過程中,不需要通過另外一個流來包裝自己的流。

2)包裝流:流在實例化過程中,需要通過另外一個流來包裝自己的流。

原始流都是低端流,包裝流都是高端流。

三、常用IO流:

1、文件操作

字節流:

1)FileOutputStream

2)FileInputStream

字符流:

3)FileWriter

4)FileReader

區別:

(1)字節流的操作是直接與文件本身關聯,不使用緩沖區;

(2)字符流的操作是通過緩沖區與文件關聯。

一般都使用字節流,中文操作采用字符流。

2、內存操作流(多用于Java web)

5)ByteArrayOutputStream 內存向程序輸出

6)ByteArrayInputStream?? 程序向內存輸入

package io.demo;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

public class ByteArrayDemo {

public static void main(String[] args) {

String str = "Hello World";

ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes()); // 內存輸入流,將str輸入保存在內存中

ByteArrayOutputStream bos = new ByteArrayOutputStream(); // 內存輸出流,內容輸出

int temp = 0;

while ((temp = bis.read()) != -1) {

bos.write((char) temp);

}

System.out.println(bos.toString());// bos.toString()取出內存輸出內容

}

}

3、BufferReader:緩沖區讀取

package io.demo;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStreamReader;

public class BufferReaderIODemo {

public static void main(String[] args) {

//輸出c:\demo.txt文件的內容

File file = new File("C:" + File.separator + "demo.txt");

if (file.exists())

try {

InputStreamReader isr = new InputStreamReader(

new FileInputStream(file));

BufferedReader buf = new BufferedReader(isr);

while (true ) {

String str=buf.readLine();

if(null ==str){

break;

}

System. out.println(str);

}

buf.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

4、java提供兩個類用于字節-字符流的轉換

7)InputStreamReader:將字節的輸入轉換為字符流

8)OutputStreamWriter:將字符的輸出流轉換為字節流的輸出

5、對象序列化:Serializable

9)ObjectOutputStream:對象序列化

10)ObjectInputStream:對象反序列化

首先需要實現序列化的對象必須實現 java.io.Serializable接口。

package io.demo;

import java.io.Serializable;

//Person類要實現 Serializable接口

public class Person implements Serializable {

private static final long serialVersionUID = 1L;

public Person(String name, int age) {

this.age = age;

this.name = name;

}

@Override

public String toString() {

return this .name + ":" + this.age ;

}

private String name;

private int age ;

}

package io.demo;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

public class ObjIODemo {

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

File file = new File("c:" + File.separator + "demo.txt");

if (!file.exists()) {

try {

file.createNewFile();

} catch (IOException e) {

e.printStackTrace();

}

}

// 輸出流,以對象的形式寫入文件c:\demo.txt

ObjectOutputStream objo = null;

try {

objo = new ObjectOutputStream(new FileOutputStream(file));

objo.writeObject( new Person("諸葛亮" , 22));

objo.writeObject( new Person("魯樹" , 23));

objo.writeObject( new Person("孔明" , 25));

objo.writeObject( new Person("valiate" , 26));

objo.close();

} catch (Exception e) {

e.printStackTrace();

}

// 從c:\demo.txt以對象的形式讀出

ObjectInputStream obji = null;

try {

obji = new ObjectInputStream(new FileInputStream(file));

while (true ) {

Person per = (Person) obji.readObject();

if (null == per)

break;

System. out.print(per + " " );

per = (Person) obji.readObject();

}

obji.close();

} catch (Exception e) {

// 讀到文件結束符EOF會拋出EOFException異常,屏蔽異常信息輸出

// e.printStackTrace();

}

}

}

//諸葛亮:22 魯樹:23 孔明:25 valiate:26

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的java io流操作_【Java基础】IO流操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。