马士兵 JAVA视频教程第08章流IOWord格式.docx

上传人:b****4 文档编号:18447516 上传时间:2022-12-16 格式:DOCX 页数:17 大小:2.35MB
下载 相关 举报
马士兵 JAVA视频教程第08章流IOWord格式.docx_第1页
第1页 / 共17页
马士兵 JAVA视频教程第08章流IOWord格式.docx_第2页
第2页 / 共17页
马士兵 JAVA视频教程第08章流IOWord格式.docx_第3页
第3页 / 共17页
马士兵 JAVA视频教程第08章流IOWord格式.docx_第4页
第4页 / 共17页
马士兵 JAVA视频教程第08章流IOWord格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

马士兵 JAVA视频教程第08章流IOWord格式.docx

《马士兵 JAVA视频教程第08章流IOWord格式.docx》由会员分享,可在线阅读,更多相关《马士兵 JAVA视频教程第08章流IOWord格式.docx(17页珍藏版)》请在冰豆网上搜索。

马士兵 JAVA视频教程第08章流IOWord格式.docx

J2SDK所提供的所有流类型位于包Java,io内都分别继承自以下四中抽象流类型。

字节流(Stream)

字符流(两个字节)

输入流

InputStream

Reader

输出流

OutputStream

Writer

3.输入/输出流类4个

1InputStream继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit),下图深色为节点流,浅色为处理流

InputStream的基本方法

2OutputStream继承自outputStream的流都是用于程序中输入数据,且数据的单位为字节(8bit),下图深色为节点流,浅色为处理流

OutputStream的基本方法

3Reader继承自Reader的流都是用于向程序输入数据,且数据的单位为字节(16bit),下图深色为节点流,浅色为处理流

Reader的基本用法

4Writer继承自Writer的流都是用于程序中输入数据,且数据的单位为字节(16bit),下图深色为节点流,浅色为处理流

writer的基本用法

4.常见节点流/处理流

4.1节点流类型(直接读取写入..不经过处理)

4.1.1常见节点流:

文件流

例子:

IO\TestFileInputStream.java字节流按一个字节一个字节读取文件

importjava.io.*;

publicclassTestFileInputStream{

publicstaticvoidmain(String[]args){

intb=0;

FileInputStreamin=null;

try{

in=newFileInputStream("

F:

\\MyWorkspace\\Java\\IO\\TestFileInputStream.java"

);

}catch(FileNotFoundExceptione){

System.out.println("

找不到指定文件"

System.exit(-1);

}

try{//读数据

longnum=0;

while((b=in.read())!

=-1){//读一个字节到变量b,b=-1表示读取完成

System.out.print((char)b);

num++;

//计数

in.close();

System.out.println();

共读取了"

+num+"

个字节"

}catch(IOExceptione1){

文件读取错误"

}

IO\TestFileOutputStream.java字节流复制文件

publicclassTestFileOutputStream{

//声明in为文件输入流(管道)

FileOutputStreamout=null;

//声明out为文件输流(管道)

/MyWorkspace/Java/IO/TestFileOutputStream.java"

out=newFileOutputStream("

/MyWorkspace/Java/IO/copyTestFileOutputStream.java"

=-1){

out.write(b);

out.close();

}catch(FileNotFoundExceptione2){

文件复制错误"

文件已复制"

IO\TestFileReader.java字符流按一个字符一个读取文件

publicclassTestFileReader{

FileReaderfr=null;

intc=0;

fr=newFileReader("

d:

\\share\\java\\io\\TestFileReader.java"

intln=0;

while((c=fr.read())!

=-1){

//charch=(char)fr.read();

System.out.print((char)c);

//if(++ln>

=100){System.out.println();

ln=0;

fr.close();

}catch(IOExceptione){

IO\TestFileWriter.java字符流输出大多国家的数文字

publicclassTestFileWriter{

FileWriterfw=null;

fw=newFileWriter("

\\MyWorkspace\\Java\\IO\\unicode.txt"

for(intc=0;

c<

=50000;

c++){

fw.write(c);

fw.close();

e1.printStackTrace();

文件写入错误"

IO\TestFileWriter2.java字符流复制文件并且每个字符后面多输出一个“|”字符

publicclassTestFileWriter2{

intb=0;

FileReaderfn=null;

fn=newFileReader("

\\MyWorkspace\\Java\\IO\\TestFileWriter2.java"

\\MyWorkspace\\Java\\IO\\copyTestFileWriter2.txt"

while((b=fn.read())!

fw.write(“|”);

fw.write(b);

}

fn.close();

4.2处理流(经过处理的流)

4.2.1常见处理流:

缓冲流

IO\TestBufferStream1.java

publicclassTestBufferStream1{

FileInputStreamfis=

newFileInputStream("

\\MyWorkspace\\Java\\IO\\TestBufferStream1.java"

BufferedInputStreambis=

newBufferedInputStream(fis);

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

bis.mark(100);

//从100号往外读

for(inti=0;

i<

=10&

&

(c=bis.read())!

=-1;

i++){

System.out.print((char)c+"

"

bis.reset();

//回到标记点

bis.close();

}catch(IOExceptione){e.printStackTrace();

IO/TestBufferStream2.java带缓冲区的输入输出流(能读一行)

publicclassTestBufferStream2{

BufferedWriterbw=newBufferedWriter(newFileWriter("

\\share\\java\\dat2.txt"

));

BufferedReaderbr=newBufferedReader(

newFileReader("

Strings=null;

for(inti=1;

=100;

s=String.valueOf(Math.random());

bw.write(s);

bw.newLine();

bw.flush();

//全部取出缓冲区数据

while((s=br.readLine())!

=null){//读一行

System.out.println(s);

bw.close();

br.close();

}catch(IOExceptione){e.printStackTrace();

5.转换流

InputStreamReader和OutputStreamWriter用于与字节数据到字符数据之间转换。

InputStreamReader需和InputStream“套接”。

InputStream转换成Reader

OutputStreamWriter需和OutputStream“套接”。

OutputStream转换成Writer

转换流在构造时可以指定起编码集合,例如

InputStreamisr=newInputStreamReader(System.in,“ISO08859_1”)

例子IO\TestTransForm1.java

IO\TestTransForm2.java

publicclassTestTransForm2{

publicstaticvoidmain(Stringargs[]){

InputStreamReaderisr=

newInputStreamReader(System.in);

//接受键盘输入

BufferedReaderbr=newBufferedReader(isr);

s=br.readLine();

//读一行

while(s!

=null){

if(s.equalsIgnoreCase("

exit"

))break;

System.out.println(s.toUpperCase());

e.printStackTrace();

}//阻塞

6.数据流

DataInputStream和DataOutputStream分别继承自InputStream和OutputStream,它属于处理流,需要分别“套接”在InputStream和OutputStream类型的节点流上。

DataInputStream和DataOutputStream踢狗了可以存取与机器无关的Java原始类型数据(如:

int,double等)的方法

DataInputStream和DataOutputStream的构造方法:

DataInputStream(InputStreamin)

DataOutputStream(OutputStreamout)

例子

7.Print流

例子1

publicclassTestPrintStream1{

PrintStreamps=null;

FileOutputStreamfos=

newFileOutputStream("

\\bak\\log.dat"

ps=newPrintStream(fos);

if(ps!

=null){

System.setOut(ps);

//设置输出窗口..

for(charc=0;

c<

=60000;

c++){

System.out.print(c+"

if(ln++>

=100){System.out.println();

例子3

importjava.util.*;

publicclassTestPrintStream3{

newInputStreamReader(System.in));

FileWriterfw=newFileWriter

("

\\bak\\logfile.log"

true);

//Log4J

PrintWriterlog=newPrintWriter(fw);

while((s=br.readLine())!

=null){

log.println("

-----"

log.println(s.toUpperCase());

log.flush();

==="

+newDate()+"

log.close();

8.Object流直接将Object写入或读出

transient关键字透明的

serializable接口可序列化

externalizable接口控制序列化

publicclassTestObjectIO{

publicstaticvoidmain(Stringargs[])throwsException{

Tt=newT();

t.k=8;

FileOutputStreamfos=newFileOutputStream("

/share/java/io/testobjectio.dat"

ObjectOutputStreamoos=newObjectOutputStream(fos);

oos.writeObject(t);

oos.flush();

oos.close();

FileInputStreamfis=newFileInputStream("

ObjectInputStreamois=newObjectInputStream(fis);

TtReaded=(T)ois.readObject();

System.out.println(tReaded.i+"

+tReaded.j+"

+tReaded.d+"

+tReaded.k);

classT

implementsSerializable

{

inti=10;

intj=9;

doubled=2.3;

transientintk=15;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1