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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

JavaSE各阶段练习题----IO流

發(fā)布時(shí)間:2024/2/28 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaSE各阶段练习题----IO流 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

package?com.io;

?

import?java.io.FileInputStream;

import?java.io.FileOutputStream;

import?java.io.IOException;

?

/*

?* 1、格式:

? try (

??? 流對(duì)象的創(chuàng)建

) {

? 流對(duì)象的使用

}

?

try 后面的小括號(hào)中,表示不管 try 塊是正常結(jié)束還是異常結(jié)束,這個(gè)資源都會(huì)被自動(dòng)關(guān)閉。

?*/

public?class?Demo01____7后關(guān)閉流的方式 {

?

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

?

try(

FileInputStream fis?= new?FileInputStream("d:/IO文檔/aaa.txt");

FileOutputStream fos?= new?FileOutputStream("d:/IO文檔/bbb.txt");

){

?

byte[] bs?= new?byte[1024];

int?len?= 0;

while((len?= fis.read(bs)) != -1) {

fos.write(bs, 0, len);

}

?

}

}

}

?

package?com.io;

?

import?java.io.FileInputStream;

import?java.io.FileNotFoundException;

import?java.io.FileOutputStream;

import?java.io.IOException;

import?java.io.SequenceInputStream;

import?java.util.Enumeration;

import?java.util.Vector;

?

public?class?Demo02_序列流多個(gè)文件 {

/*

?* 合并多個(gè)流

?* public SequenceInputStream(Enumeration<? extends InputStream> e)

?* 可以看出構(gòu)造方法給出Enumeration對(duì)象作為參數(shù),Enumeration對(duì)象會(huì)返回一系列InputStream類型的對(duì)象,

?* 提供給SequenceInputStream類讀取。

?*/

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

?

//創(chuàng)建文件輸入流讀取文件

FileInputStream fis1?= new?FileInputStream("d:/IO文檔/aaa.txt");

FileInputStream fis2?= new?FileInputStream("d:/IO文檔/bbb.txt");

FileInputStream fis3?= new?FileInputStream("d:/IO文檔/ccc.txt");

?

//創(chuàng)建Vector對(duì)象

Vector<Object> vector?= new?Vector<>();

vector.add(fis1);

vector.add(fis2);

vector.add(fis3);

Enumeration?elements?= vector.elements();

?

SequenceInputStream sis?= new?SequenceInputStream(elements);

FileOutputStream fos?= new?FileOutputStream("d:/IO文檔/ddd.txt");

byte[] bs?= new?byte[1024];

int?len?= 0;

while((len?= sis.read(bs)) != -1) {

fos.write(bs,0,len);

}

?

fos.close();

sis.close();

fis1.close();

fis2.close();

fis3.close();

}

?

}

?

package?com.io;

?

import?java.io.File;

import?java.io.FileInputStream;

import?java.io.FileNotFoundException;

import?java.io.FileOutputStream;

import?java.io.IOException;

import?java.io.SequenceInputStream;

?

public?class?Demo02_序列流又稱合并流 {

/*

?* SequenceInputStream類

?*

?* 【注】序列流只針對(duì)文本文檔即.txt其他文件會(huì)有不一樣的錯(cuò)誤

?*/

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

/*

?* 兩個(gè)文件的合并流

?*/

try(

//創(chuàng)建兩個(gè)文件輸入流讀取兩個(gè)文件

FileInputStream fis1?= new?FileInputStream("d:/IO文檔/aaa.txt");

FileInputStream fis2?= new?FileInputStream("d:/IO文檔/bbb.txt");

//SequenceInputStream對(duì)象用于合并兩個(gè)文件輸入流

SequenceInputStream sis?= new?SequenceInputStream(fis1,fis2);

FileOutputStream fos?= new?FileOutputStream("d:/IO文檔/ccc.txt");

){

byte[] bs?= new?byte[1024];

int?len?= 0;

while?((len?= sis.read(bs)) != -1) {

fos.write(bs, 0, len);

//寫入換行

fos.write("\r\n".getBytes());

}

}

}

}

?

package?com.io;

?

import?java.io.DataInputStream;

import?java.io.DataOutputStream;

import?java.io.File;

import?java.io.FileInputStream;

import?java.io.FileNotFoundException;

import?java.io.FileOutputStream;

?

public?class?Demo03_數(shù)據(jù)流 {

/*

?* DateInputSream ?和 ????DateOutputStream

?* 將基本數(shù)據(jù)類型進(jìn)行序列化和反序列化

?* 而且還提供了readUTF()方法,和writeUTF()方法

?*/

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

?

FileOutputStream fos?= new?FileOutputStream("d:/IO文檔/ddd.txt");

DataOutputStream dos?= new?DataOutputStream(fos);

dos.write(10); ????//寫入數(shù)據(jù)默認(rèn)字節(jié)

dos.writeChar('中');

dos.writeUTF("加油,你會(huì)的到你所想要的一切");

dos.close();

fos.close();

?

FileInputStream fis?= new?FileInputStream("D:/IO文檔/ddd.txt");

DataInputStream dis?= new?DataInputStream(fis);

System.out.println(dis.read());

System.out.println(dis.readChar());

System.out.println(dis.readUTF());

dis.close();

fos.close();

?

}

?

}

?

package?com.io;

?

import?java.io.FileInputStream;

import?java.io.FileOutputStream;

import?java.io.ObjectInputStream;

import?java.io.ObjectOutputStream;

import?java.io.Serializable;

?

public?class?Demo04_對(duì)象序列化 {

/*

?* 【注】對(duì)象必須實(shí)現(xiàn)【【【Serializable接口】】】

?*

?* 序列化:將內(nèi)存中的對(duì)象轉(zhuǎn)化為二進(jìn)制數(shù)據(jù)流的形式輸出,保存到磁盤中(ObjectOutputStream)

?*

?* 反序列化:根據(jù)序列化保存的二進(jìn)制數(shù)據(jù)文件,恢復(fù)到序列化之前的JAVA對(duì)象(ObjectInputStream)

?*/

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

?

Student s1?= new?Student(1,"劉蕾助教",18);

Student s2?= new?Student(2,"李木大神",22);

Student s3?= new?Student(2,"李木大神",22);

Student s4?= new?Student(2,"李木大神",22);

?

ObjectOutputStream oos?= new?ObjectOutputStream(new?FileOutputStream("stu.txt"));

?

oos.writeObject(s1);

oos.writeObject(s2);

oos.writeObject(s3);

oos.writeObject(s4);

?

oos.close();

?

ObjectInputStream ois?= new?ObjectInputStream(new?FileInputStream("stu.txt"));

?

Student o1?= (Student) ois.readObject();

Student o2?= (Student) ois.readObject();

Student o3?= (Student) ois.readObject();

Student o4?= (Student) ois.readObject();

?

System.out.println(o1);

System.out.println(o2);

System.out.println(o3);

System.out.println(o4);

}

}

?

?

class?Student?implements?Serializable{

private?int?id;

private?String name;

private?int?age;

public?Student() {

}

public?Student(int?id, String name, int?age) {

this.id?= id;

this.name?= name;

this.age?= age;

}

public?int?getId() {

return?id;

}

public?void?setId(int?id) {

this.id?= id;

}

public?String getName() {

return?name;

}

public?void?setName(String name) {

this.name?= name;

}

public?int?getAge() {

return?age;

}

public?void?setAge(int?age) {

this.age?= age;

}

@Override

public?String toString() {

return?"Student [id="?+ id?+ ", name="?+ name?+ ", age="?+ age?+ "]";

}

}

?

?

package?com.io;

?

import?java.io.FileInputStream;

import?java.io.FileOutputStream;

import?java.io.ObjectInputStream;

import?java.io.ObjectOutputStream;

import?java.io.Serializable;

?

public?class?Demo05_序列化中遇到的問題 {

/*

?* 當(dāng)連續(xù)兩次序列化同一對(duì)象引用時(shí),并不會(huì)有兩個(gè)對(duì)象被序列化。

?* 第2次只是輸出一個(gè)序列號(hào)編號(hào)。即使當(dāng)?shù)谝恍蛄谢瓿珊?#xff0c;修改了對(duì)象的值,再次進(jìn)行序列化,

?* 被序列化對(duì)象的值也不會(huì)發(fā)生變化。

?*

?* 并且如果你在實(shí)體類中刪除或者添加新的內(nèi)容,則出現(xiàn)InvalidClassException錯(cuò)誤

?*/

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

?

Student1 s1?= new?Student1(1,"劉蕾助教",18);

Student1 s2?= new?Student1(2,"李木大神",22);

Student1 s3?= new?Student1(3,"李鑫大神");

?

ObjectOutputStream oos?= new?ObjectOutputStream(new?FileOutputStream("stu2.txt"));

?

oos.writeObject(s1);

s1.setAge(80);

oos.writeObject(s1);

// 和第1次寫的是同一個(gè)對(duì)象,第2次序列化時(shí)并不會(huì)有兩個(gè)對(duì)象被序列化。

//第2次只是輸出一個(gè)序列號(hào)編號(hào)

oos.writeObject(s2);

oos.writeObject(s3);

oos.close();

?

ObjectInputStream ois?= new?ObjectInputStream(new?FileInputStream("stu2.txt"));

?

Student1 o1?= (Student1) ois.readObject();

Student1 o2?= (Student1) ois.readObject();

Student1 o3?= (Student1) ois.readObject();

Student1 o4?= (Student1) ois.readObject();

?

System.out.println(o1);

System.out.println(o2);

System.out.println(o3);

System.out.println(o4);

?

/*

?* Student [id=1, name=劉蕾助教, age=18]

Student [id=1, name=劉蕾助教, age=18]

Student [id=2, name=李木大神, age=22]

?*/

?

}

}

?

class?Student1?implements?Serializable{

private?int?id;

private?String name;

private?int?age;

public?Student1() {

}

public?Student1(int?id, String name) {

this.id?= id;

this.name?= name;

}

public?Student1(int?id, String name, int?age) {

this.id?= id;

this.name?= name;

this.age?= age;

}

public?int?getId() {

return?id;

}

public?void?setId(int?id) {

this.id?= id;

}

public?String getName() {

return?name;

}

public?void?setName(String name) {

this.name?= name;

}

public?int?getAge() {

return?age;

}

public?void?setAge(int?age) {

this.age?= age;

}

@Override

public?String toString() {

return?"Student [id="?+ id?+ ", name="?+ name?+ ", age="?+ age?+ "]";

}

}

package?com.io;

?

import?java.io.FileInputStream;

import?java.io.FileOutputStream;

import?java.io.ObjectInputStream;

import?java.io.ObjectOutputStream;

import?java.io.Serializable;

?

public?class?Demo06_序列化中的版本號(hào)問題 {

?

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

?

Student2 s1?= new?Student2(1,"劉蕾助教",18);

Student2 s2?= new?Student2(2,"李木大神",22);

Student2 s3?= new?Student2(2,"李木大神");

?

ObjectOutputStream oos?= new?ObjectOutputStream(new?FileOutputStream("stu1.txt"));

?

oos.writeObject(s1);

s1.setAge(80);

oos.writeObject(s1);

oos.writeObject(s2);

oos.writeObject(s3);

oos.close();

?

ObjectInputStream ois?= new?ObjectInputStream(new?FileInputStream("stu1.txt"));

?

Student2 o1?= (Student2) ois.readObject();

Student2 o2?= (Student2) ois.readObject();

Student2 o3?= (Student2) ois.readObject();

Student2 o4?= (Student2) ois.readObject();

?

System.out.println(o1);

System.out.println(o2);

System.out.println(o3);

System.out.println(o4);

?

/*

?* Student [id=1, name=劉蕾助教, age=18]

Student [id=1, name=劉蕾助教, age=18]

Student [id=2, name=李木大神, age=22]

Student [id=2, name=李木大神, age=0]

?*/

?

}

?

}

class?Student2 implements?Serializable{

/**

?* 下面這個(gè)即為版本號(hào)

?*/

private?static?final?long?serialVersionUID?= 1L;

private?int?id;

private?String name;

private?int?age;

public?Student2() {

}

public?Student2(int?id, String name) {

this.id?= id;

this.name?= name;

}

public?Student2(int?id, String name, int?age) {

this.id?= id;

this.name?= name;

this.age?= age;

}

public?int?getId() {

return?id;

}

public?void?setId(int?id) {

this.id?= id;

}

public?String getName() {

return?name;

}

public?void?setName(String name) {

this.name?= name;

}

public?int?getAge() {

return?age;

}

public?void?setAge(int?age) {

this.age?= age;

}

@Override

public?String toString() {

return?"Student [id="?+ id?+ ", name="?+ name?+ ", age="?+ age?+ "]";

}

}

?

package?com.io;

?

import?java.io.FileNotFoundException;

import?java.io.RandomAccessFile;

?

/*

?* RandomAccessFile支持對(duì)文件進(jìn)行非順序的、隨機(jī)的訪問。

?

不是一個(gè)流對(duì)象,不在IO體系中,但是比流對(duì)象更加的強(qiáng)大;既可以讀,也可以寫;可以隨機(jī)訪問。

?

構(gòu)造方法:

? RandomAccessFile(String path, String mode)

? path:文件的路徑

? mode:操作文件的模式, “r”是只讀,”rw”是讀寫 ?"rws"是每次都更新到潛在的存儲(chǔ)設(shè)備中 s指同步(synchronous)

? ?????? ???"rwd"是將文件內(nèi)容更新到存儲(chǔ)設(shè)備中去

?

??它實(shí)現(xiàn)了DataInput 和DataOutput 接口,并提供了三個(gè)額外方法:

???????int?skipBytes(int) ??向前移動(dòng)文件指針指定的字節(jié)數(shù)

???????void seek(long) ????文件指針定位,參數(shù)為偏移量

???????long getFilePointer()返回當(dāng)前文件指針的位置(相對(duì)文件首的偏移量)

???????[補(bǔ)充] void setLength(long newLength) 設(shè)置文件長(zhǎng)度

?*/

public?class?Demo07_RandomAccessFile {

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

?

/*RandomAccessFile raf?= new RandomAccessFile("data.txt","r");

raf.skipBytes(5); ?//向后移動(dòng)5個(gè)字節(jié),再開始讀數(shù)據(jù)

?

int?i = raf.read();

System.out.println(i);

?

raf.seek(5); ?// 直接把指針定位的某個(gè)位置

?

String str2 = raf.readLine();

System.out.println(str2);

?

raf.close();*/

?

??

RandomAccessFile raf?= new?RandomAccessFile("data.txt","rw");

?

?

raf.writeInt(200);

raf.seek(10);

raf.writeInt(300);

?

?

int?x?= raf.readInt();

System.out.println(x);

?

raf.seek(10);

?

int?y?= raf.readInt();

System.out.println(y);

?

raf.close();

?

}

}

?

package?com.io;

?

import?java.io.File;

import?java.io.FileInputStream;

import?java.io.FileNotFoundException;

import?java.io.FileOutputStream;

import?java.io.IOException;

import?java.io.InputStream;

import?java.util.zip.ZipEntry;

import?java.util.zip.ZipOutputStream;

?

public?class?Demo08_壓縮流 {

ZipOutputStream zos?= null;

?

public?Demo08_壓縮流 (){

try?{

zos= new?ZipOutputStream(new?FileOutputStream("F:\\0715大數(shù)據(jù).zip"));

} catch?(FileNotFoundException e) {

e.printStackTrace();

}

}

?

public?static?void?main(String[] args) {

File f?= new?File("F:\\0715大數(shù)據(jù)");

Demo08_壓縮流 ?zzz?= new?Demo08_壓縮流 ();

zzz.zip(f);

zzz.close();

}

// 傳入要壓縮的文件夾

public??void?zip(File file){

File[] fs?= file.listFiles();

for(File f:fs){

if(f.isFile()){

zipFile(f);

}else{

zip(f); ?// 是文件夾,遞歸調(diào)用

}

}

}

//壓縮文件

public?void?zipFile(File f){

try?{

// System.out.println(f.getPath().substring(3));

zos.putNextEntry(new?ZipEntry(f.getPath().substring(3))); // 如果傳入ZipEntry的文件名帶有目錄,在壓縮時(shí),壓縮包中就會(huì)生成目錄

// 一個(gè)ZipEntry是一個(gè)要被壓縮的項(xiàng)

InputStream is?= new?FileInputStream(f);

byte[] b?= new?byte[1024];

int?len?= 0;

while((len=is.read(b))!=-1){

zos.write(b,0, len);

}

zos.closeEntry();

is.close();

?

} catch?(IOException e) {

e.printStackTrace();

}

}

public?void?close(){

try?{

zos.close();

} catch?(IOException e) {

e.printStackTrace();

}

}

?

}

?

?

總結(jié)

以上是生活随笔為你收集整理的JavaSE各阶段练习题----IO流的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。