版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章输入输出与文件处理学习目标掌握流的概念,掌握字节型输入/输出流和缓冲区输入/输出流的基本使用方法掌握文件类的概念和使用方法掌握文件读写中使用到的FileInputStream类、FileOutputStream类和RandomAccessFile类的使用方法8.1.1任务8.1使用输入/输出流8.1输入/输出流一、任务引入流是Java中处理输入/输出的形式。字节型输入/输出流由InputStream和OutputStream派生而来,字符型输入/输出由Reader和Writer派生而来,下面的例子演示了如何使用字节型输入/输出流,字符型输入/输出流的使用方法与字节型类似。二、任务目标掌握Java中字节型输入/输出流的使用方法。三、任务内容编写程序,由字符串生成字节型输入/输出流,并使用适当方法将流内容显示在屏幕上。四、程序清单/*源程序文件名:Ex0801.java*/importjava.io.*;public
classEx0801{
public
static
voidmain(Stringargs[])throwsIOException{ Strings="ThisisatestofI/Ostream";
bytebuffer[]=s.getBytes(); ByteArrayOutputStreambaOut=newByteArrayOutputStream();
for(inti=0;i<buffer.length;i++) baOut.write(buffer[i]); ByteArrayInputStreambaIn=newByteArrayInputStream
(baOut.toByteArray());
booleaneof=false;
while(!eof){
intc=baIn.read();
if(c==-1) eof=true;
else System.out.print((char)c); } System.out.println("\n'writeTo方法可以达到同样的结果:"); baOut.writeTo(System.out); baOut.close(); System.out.println("\n缓冲输入流的长度(未重置指针):"+baIn.available()); baIn.reset(); System.out.println("缓冲输入流的长度(重置指针后):"+baIn.available()); }}五、运行结果六、任务小结在这个例子中,我们将一个String对象转换成字节数组后,构造了一个字节数组输出流ByteArrayOutputStream,这是Java输出流的一种。同时构造了一个字节数组输入流ByteArrayInputStream。然后使用不同的方法将输入流和输出流里的内容显示在屏幕上。最后还使用输入流的available方法和reset方法查看了不同情况下流内的可用字节数。8.1.2流所有的编程语言都支持读入输入和显示输出,Java语言以流的形式处理所有的输入和输出。流是由源到目的地通过通信路径传递的一串字节或字符,流中的数据只能向一个方向流动,所以我们使用区分输入数据和输出数据的流。流在被接收时称为输入(读),在被发送时称为输出(写)。使用输入流可从文件或键盘读入数据,而使用输出流可将数据写入到文件或其他输出设备,如显示在屏幕上。Java中的流按处理的数据类型又可分为字节流和字符流,分别用于处理字节型数据和字符型数据。字节输入流的基类是InputStream,字节输出流的基类是OutputStream,字符输入流的基类是Reader,字符输出流的基类是Writer。这四个类都是抽象类,是所有其他流的父类。8.1.3字节型输入/输出流一、InputStream类方法说明publicabstractintread()从输入流中读取一字节数据,当遇到文件尾时返回-1publicintread(byteb[])从输入流中读取一组字节数据,并将其存放在数组b中,当遇到文件尾时返回-1方法说明publicintread(byteb[],intoffset,intlength)从输入流中读取长度为length的一组数据,并将其存放在数组b中以offset开始的空间内publicvoidclose()关闭输入流并释放资源publiclongskip(longn)从输入流中跳过n个字节表8-1InputStream类中的常用方法续表二、OutputStream类方法说明publicabstractvoidwrite(intb)向输出流中写入一字节数据publicvoidwrite(byteb[])向输出流中写入数组b中的一组数据publicvoidwrite(byteb[],intoffset,intlength)向输出流中写入数组b中从offset位置开始,长度为length的一组数据publicvoidflush()清除缓冲区,将缓冲区内尚未输出的数据全部输出publicvoidclose()关闭输出流并释放资源表8-2OutputStream类中的常用方法8.1.4缓冲区输入/输出流一、ByteArrayInputStream类方法说明publicByteArrayInputStream(bytebuf[])由字节数组创建相应的输入流publicByteArrayInputStream(bytebuf[],intoffset,intlength)由字节数组中起点为offset,长度为length的数据创建输入流publicsynchronizedintread()读取一个字节publicsynchronizedintread(byteb[],intoffset,intlength)读取length个字节,存放到数组b中以offset开始的位置publicsynchronizedlongskip(longn)跳过n个字节publicsynchronizedintavailable()返回缓冲区内的可用字节数publicsynchronizedvoidreset()重置指针到流的开始位置二、ByteArrayOutputStream类方法说明publicByteArrayOutputStream()创建一个字节数组输出流publicByteArrayOutputStream(intsize)创建一个缓冲区长度为size的字节数组输出流publicsynchronizedvoidwrite(intb)写入一个字节publicsynchronizedvoidwrite(byteb[],intoffset,intlength)把数组b中由offset开始,长度为length的数据写入缓冲区publicsynchronizedvoidwriteTo(OutputStreamout)把缓冲区内容写入到另一输出流outpublicsynchronizedvoidreset()重置指针到流的开始位置publicsynchronizedbyte[]toByteArray()将缓冲区内容作为一个字节数组返回publicintsize()返回当前缓冲区大小publicStringtoString()将缓冲区内容转换为字符串返回表8-4ByteArrayOutputStream类的常用方法三、StringBufferInputStream类它的构造函数以一个字符串为参数,原型为:publicStringBufferInputStream(Strings)其他常用方法均与ByteArrayInputStream中方法同名且基本功能相似。8.2.1任务8.2创建文件和文件夹8.2文件类一、任务引入对文件的操作首先是建立文件和文件夹,Java中使用File类的相关方法来完成这一操作。请看下面的例子:二、任务目标掌握Java中File类的使用方法。三、任务内容编写程序,建立几个测试用的文件和文件夹。四、程序清单五、运行结果六、任务小结File类中封装了有关文件和文件夹的基本操作。在这个例子中,我们通过七个文件类,分别创建了四个文件夹和三个文件。8.2.2File类Java中的File类是顶层类Object类的子类,在java.io包中,它提供了类似Windows资源管理器的一些功能,可以对文件和文件夹进行诸如创建和删除文件及文件夹、浏览文件等操作。File类的构造函数如下:File(Stringpathname),通过把给出的路径名转换为抽象路径名,创建一个新的File实例。File(Stringparent,Stringchild),由父路径名和子路径名,创建一个新的File实例。File(Fileparent,Stringchild),由父File对象和子路径名,创建一个新的File实例。8.3.1任务8.3文件输入输出操作8.3文件读写一、任务引入在创建了文件夹和文件后,可以使用FileInputStream类、FileOutputStream类及RandomAccessFile类访问文件,读出或写入数据。请看下面的例子:二、任务目标掌握Java中文件输入/输出的基本操作方法。三、任务内容编写程序,从一个文件中读出数据,把数据显示到屏幕,并写入到另一个文件。四、程序清单/*源程序文件名:Ex0803.java*/importjava.io.*;public
classEx0803{
public
static
voidmain(Stringargs[]){
try{ FileInputStreaminObj=newFileInputStream("c:\\FileTest\\Text1.dat"); FileOutputStreamoutObj=newFileOutputStream("c:\\FileTest\\Text2.dat");
bytebyArray[]=new
byte[2];
while(inObj.read(byArray)!=-1){ StringstrObj=newString(byArray); System.out.print(strObj); outObj.write(byArray); } inObj.close(); outObj.close(); }catch(FileNotFoundExceptione){ System.out.println("未找到指定文件!"); e.printStackTrace(); }catch(IOExceptione){ System.out.println("文件读写错误!"); e.printStackTrace();
} }}五、运行结果六、任务小结在运行程序之前,我们首先用记事本打开在任务8.2中创建的Text1.dat文件,在其中输入如图8-3的文字。运行程序之后我们就可以看到Text1.dat文件中的内容将显示在屏幕上,同时Text2.dat文件中也将存储有同样的文字。8.3.2FileInputStream方法说明intread()从文件读入一个字节的数据方法说明intread(byte[]b))从文件读入一组数据并存放在字节数组b中intread(byte[]b,intoffset,intlength)从文件读入一组长度为length的数据并存放在字节数组中offset开始的位置intclose()关闭输入流,并释放与其关联的文件表8-5FileInputStream类中的常用方法续表8.3.3FileOutputStream方法说明intwrite()向文件中写入一个字节的数据intwrite(byte[]b)向文件中写入数组b中的数据intwrite(byte[]b,intoffset,intlength)向文件中写入数组b中从offset位置开始,长度为length的一组数据intclose()关闭输出流,并释放与其关联的文件表8-6FileOutputStream类中的常用方法8.3.4RandomAccessFile随机访问(RandomAccess)是指:数据可读或写到文件中的随机单元。在FileInputStream和FileOutputStream中,数据将作为连续信息流分别进行读写。Java提供的RandomAccessF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《认识并战胜冠心病》课件
- 收废品职务劳务合同(2篇)
- 2024年版高压洗车设备销售协议2篇
- 《LED的热学特性》课件
- 2025年滨州货运资格证题库在线练习
- 2025年西藏从业资格证500道题速记
- 2025年安康货运从业资格证考试试题及答案
- 2025年玉树道路运输从业资格证考哪些项目
- 2024年牛肉供货商协议范本3篇
- 2025年石家庄货运从业资格考试题目大全及答案
- 电梯日管控、周排查、月调度制度及管控清单
- 苹果电脑macOS效率手册
- 2025年广东省春季高考学业水平考试数学试卷试题(含答案解析)
- 中国企业全球化深度洞察报告-产业篇
- 老妈是个菜贩子(2022年海南中考语文试卷记叙文阅读题及答案)
- 15《我们不乱扔》(教学设计)2024-2025学年统编版(2024)道德与法治一年级上册
- 《诗意的色彩》课件 2024-20245学年人美版(2024)初中美术七年级上册
- 中铁四局分包劳务合同模板
- 厂房转租三方协议合同协议书
- 水务产业技术标准化
- 人教版二年级语文上册期末考试卷及答案下载
评论
0/150
提交评论