Java程序设计ppt课件第15章输入输出流与文件操作_第1页
Java程序设计ppt课件第15章输入输出流与文件操作_第2页
Java程序设计ppt课件第15章输入输出流与文件操作_第3页
Java程序设计ppt课件第15章输入输出流与文件操作_第4页
Java程序设计ppt课件第15章输入输出流与文件操作_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十五章输入输出流与文件操作第十五章输入输出流与文件操作目录

重点与难点点拨输入输出流的分类目录和文件管理文件和随机访问其他常用的流综合案例字符流字节流经典练习题目录重点与难点点拨输入输出流的分类目录和文件管理文件和本章知识重点3132输入输出流的分类33java.io包中流的体系结构34目录和文件管理涉及到的类输入输出流的概念本章知识重点3132输入输出流的分类33java.io包中流本章知识难点33java.io包中的输入输出流类3132目录和文件管理涉及到的类流输入及输出的一般过程本章知识难点33java.io包中的输入输出流类3132目录输入输出流的分类Java流的概念

Java使用流(stream)来执行输入输出(I/O)的功能,流是一种数据的源头和目的之间的通信途径标准输入输出

Java系统事先定义好两个流对象,分别与系统的标准输入和标准输出相联系,它们是System.in和System.outSystem是Java中一个功能很强大的类,利用它可以获得很多Java运行时的系统信息。

3132【例15.1】输入输出流的分类Java流的概念3132【输出流(程序写出数据)

输入流(程序读入数据)

Java中根据流操作的种类可分为:字节流和字符流根据流的方向,流可分为两类:输入流和输出流Java流类体系结构1

Java流类体系结构2Java流类体系结构3

Java流类体系结构4

——Java流的概念输入输出流的分类输出流(程序写出数据)输入流(程序读入数据)Java中根目录和文件管理

32文件名的处理31File类文件或目录的生成文件属性测试普通文件信息和工具目录操作◆publicFile(Stringpath):如果path是实际存在的路径,则该File对象表示的是目录;如果path是文件名,则该File对象表示的是文件。◆publicFile(Stringpath,Stringname):path是路径名,name是文件名(不可为空)。◆publicFile(Filedir,Stringname):dir是路径名,name是文件名。◆StringgetName():得到一个文件的名称(不包括路径)。◆StringgetPath():得到一个文件的路径名。◆StringgetAbsolutePath():得到一个文件的绝对路径名。◆StringgetParent():得到一个文件的上一级目录名。◆StringrenameTo(FilenewName):将当前文件名更名为给定文件的完整路径。【例15.2】◆booleanexists():测试当前File对象所指示的文件或目录是否存在,若存在,返回True。◆boolean

createNewFile():创建当前文件。◆booleancanWrite():测试当前文件是否可写。◆booleancanRead():测试当前文件是否可读。◆booleanisFile():测试当前文件是否是文件(不是目录)。◆booleanisDirectory():测试当前文件是否是目录,若为目录则返回True。【例15.3】◆longlastModified():得到文件最近一次修改的时间。◆longlength():得到文件的长度,以字节为单位,若不存在,返回0。◆booleandelete():删除File对象代表的文件或目录,目录需为空。删除成功,返回True。◆booleanmkdir():生成一个由该对象指定的路径(新目录),若成功,返回True。◆booleanmkdirs():生成一个新的目录,包含子目录。若成功,返回true。◆booleanrenameTo(FilenewName):将当前File对象所代表的路径名改为newName所代表的路径名。若成功,返回true。◆Stringlist():列出当前目录下的文件。◆File[]listFiles():得到该对象所代表的目录下的File对象数组。◆StringtoString():得到抽象路径表示法。【例15.4】File类的应用【例15.5】【例15.6】目录和文件管理32文件名的处理31File类文件或目录字节流

缓冲区流BufferedInputStream和BufferedOutputStream33顺序读/写文件(FileInputStream与FileOutputStream)31ByteArrayInputStream和ByteArrayOutputStream32字节流缓冲区流BufferedInputStream和Bu顺序读/写文件(FileInputStream与FileOutputStream)⑴FileInputStream类从磁盘文件读取数据。常用的构造方法有:◆FileInputStream(Stringname):打开文件name用来读取数据。如:FileInputStreamf=newFileInputStream("c:/test.txt");◆FileInputStream(Filefile):打开文件file用来读取数据。如:Filef=newFile("c:/test.txt");FileInputStreamf1=newFileinputStream(f);◆将FileDescriptor对象作为其参数。如:FileDescriptor()fd=newFileDescriptor();FileinputStreamf2=newFileInputstream(fd);⑵FileOutputStream类创建文件(如果文件不存在),并将数据写入文件。FileOutputStream类常用的构造方法有:◆FileOutputStream(Stringname):打开文件name用来写入数据。如:FileOutputStreamf=newFileOutputStream("c:/test.txt");◆FileOutputStream(Filefile):打开文件file用来写入数据。如:Filef=newFile("c:/test.txt");FileOutputStreamf1=newFileOutputStream(f);◆FileOutputStream(Stringname,Booleanappend):打开文件name用来写入数据,若append为true,则写入的数据会加到原有文件后面,否则,覆盖原有的文件。如:FileOutputStreamf=newFileOutputStream("c:/test.txt",true);◆将FileDescriptor对象作为其参数。FileDescriptor()fd=newFileDescriptor();FileOutputStreamf=newFileOutputStream(fd);【例15.7】字节流

顺序读/写文件(FileInputStream与FileOuByteArrayInputStream和ByteArrayOutputStream字节流

⑴ByteArrayInputStream将字节数组用作源,并在该数组中执行读操作它有两种构造方法。第一种构造方法将字节数组作为参数。◆ByteArrayInputStream(byte[]buffer):生成一个字节数组的输入流,并指定一个字节数组buffer为此输入流的流缓冲区。如:ByteArrayInputStreamb=newByteArrayInputStream(buf[]);另外一种构造方法有助于从指定的字节数组来创建ByteArrayInputStream。◆ByteArrayinputStreamb=newByteArrayinputStream(buf[],off,len);其中off是要读取的第一个字节的偏移,len是要读取数组的字节数;⑵ByteArrayOutputStream有2种构造方法◆ByteArrayOutputStream():生成一个字节数组的输出流,其缓冲区的默认初始大小为32字节,若有需要,缓冲区的大小会随之增加。如:ByteArrayOutPutStreamb=newByteArrayOutputStream();◆ByteArrayOutputStream(intsize):创建32个自己的缓冲器用于储存数据,但分配size字节的初始大小给此缓冲区。如:ByteArrayOutputStreamb1=newByteArrayOutputStream(size);创建大小为size的缓冲器⑶ByteArrayOutputStream的一些常用方法:◆intsize():返回此流缓冲区的大小。◆byte[]toByteArray():生成一个新的字节数组,并将流的内容复制到此字节数组。◆StringtoString():将流的内容转换为String对象。【例15.8】ByteArrayInputStream和ByteArray字节流

缓冲区流BufferedInputStream和BufferedOutputStream⑴BufferedInputStream类的构造方法和方法:◆BufferedInputStream(InputStreamin):构造一个BufferedInputStream。◆BufferedInputStream(InputStreamin,intsize):构造一个具有给定的缓冲区大小的BufferedInputStream。◆intavailable():得到可以从这个输入流读取的字节数。◆voidclose():关闭流。◆voidmark(intreadlimit):在这个输入流的当前位置做标记。◆booleanmarkSupported():检查这个输入流是否支持mark和reset方法。◆intread():读取数据的下一个字节。◆intread(byte[]b,intoff,intlen):从这个字节输入流的给定偏移量处开始读取字节,存储到给定的字节数组。◆voidreset():将缓冲区重新设置到加标记的位置。◆longskip(longn):跳过n个字节的数据。⑵BufferedOutputStream类的构造方法和方法:◆BufferedOutputStream(OutputStreamout):构造一个BufferedOutputStream。◆BufferedOutputStream(OutputStreamout,intsize):构造一个具有给定的缓冲区大小的BufferedOutputStream。◆voidflush():刷新这个流。◆voidwrite(byte[]b,intoff,intlen):将给定的字节数组写到这个缓冲输出流。◆voidwrite(intb):将给定的字节写到这个缓冲输出流。【例15.9】字节流缓冲区流BufferedInputStream和Bu字符流

31Reader和Writer32InputStreamReader和OutputStreamWriter33FileReader34FileWriter35BufferedReader和BufferedWriter36CharArrayReader和CharArrayWriter字符流31Reader和Writer32InputStr字符流InputStreamReader和OutputStreamWriter⑴InputStreamReader类的构造方法和方法:◆InputStreamReader(InputStreamin):构造一个InputStreamReader。◆InputStreamReader(InputStreamin,Stringenc):使用命名的字符编码构造一个InputStreamReader。◆voidclose():关闭流。◆StringgetEncoding():得到字符编码的名称。◆intread():读取一个字符。◆intread(char[]cbuf,intoff,intlen):将字符读到数组中。◆booleanready():如果这个流已准备好,返回True。⑵OutputStreamWriter类的构造方法和方法:◆OutputStreamWriter(OutputStreamout):构造一个OutputStreamWriter。◆OutputStreamWriter(OutputStreamout,Stringenc):使用命名的字符编码构造一个OutputStreamWriter。◆voidclose():关闭流。◆voidflush():刷新流。◆StringgetEncoding():得到这个流使用的字符编码的名称。◆voidwrite(char[]cbuf,intoff,intlen):写字符数组的一部分。◆voidwrite(intc):写一个字符。◆voidwrite(Stringstr,intoff,intlen):写一个字符串的一部分。【例15.10】字符流InputStreamReader和OutputStr字符流FileReader◆FileReader(Filefile):构造一个FileReader。◆FileReader(FileDescriptorfd):从一个文件描述符构造一个FileReader。◆FileReader(Stringfilename):从一个文件名构造一个FileReader。【例15.11】字符流FileReader◆FileReader(File字符流FileWriter◆FileWriter(Filefile):从File对象构造一个FileWriter。◆FileWriter(FileDescriptorfd):从文件描述符构造一个FileWriter。◆FileWriter(Stringfilename):从文件名构造一个FileWriter。◆FileWriter(Stringfilename,booleanappend):构造一进行附加的FileWriter。【例15.12】字符流FileWriter◆FileWriter(File字符流BufferedReader和BufferedWriter这两个类对应的流使用了缓冲,能大大提高输入输出的效率。这两个也是过滤器流,常用来对InputStreamReader和OutputStreamWriter进行处理。【例15.13】字符流BufferedReader和BufferedWrit字符流CharArrayReader和CharArrayWriter⑴CharArrayReader类的构造方法和方法如下:◆CharArrayReader(char[]buf):从给定的字符数组构造一个CharArrayReader。◆CharArrayReader(char[]buf,intoffset,intlength):同上。◆voidclose():关闭流。◆voidmark(intreadAheadLimit):在流中的当前位置加标记。◆booleanmarkSupported():如果这个流支持mark操作,那么返回True。◆intread():读取一个字符。◆intread(char[]b,intoff,intlen):将字符读入数组的一部分。◆booleanready():检查这个流是否已经准备好被读取。◆voidreset():将流重设到最近的标记。◆longskip(longn):跳过n个字符。⑵CharArrayWriter类的构造方法和方法如下:◆CharArrayWriter():构造一个CharArrayWriter。◆CharArrayWriter(intinitialSize):构造一个具有给定初始大小的CharArrayWriter。◆voidclose():关闭流。◆voidflush():刷新流。◆voidreset():重设流。◆intsize():得到缓冲区的当前大小。◆char[]toCharArray():得到输入数据的副本。◆StringtoString():将输入数据转换为字符串。◆voidwrite(char[]c,intoff,intlen):将字符写到缓冲区中。◆voidwrite(intc):将一个字符写到缓冲区中。◆voidwrite(Stringstr,intoff,intlen):将字符串的一部分写到缓冲区中。◆voidwriteTo(Writerout):将缓冲区的内容写到另一个字符流中。【例15.14】字符流CharArrayReader和CharArrayWr文件的随机访问

31在java中,类RandomAccessFile提供了随机访问文件的方法◆RandomAccessFile(Filefile,Stringmode):构造一个随机访问文件流,file为被访问的文件对象,mode是用来指定存取的模式,mode可以为r(读)、w(写)或rw(读写)。◆RandomAccessFile(Stringname,Stringmode):构造一个随机访问文件流,以便访问由字符串name指定名字的文件,mode参数使用同上32RandomAccessFile类提供的用来读取某种基本数据类型的数据或字符串的方法◆booleanreadBoolean()◆bytereadByte()◆charreadChar()◆doublereadDouble()◆floatreadFloat()◆intreadInt()◆longreadLong()◆shortreadShort()◆StringreadLine()33RandomAccessFile类提供的用来向文件中写入某种基本类型的数据或字符串的方法◆voidwriteByte(byteb)◆voidwriteBytes(Strings)◆voidwriteChar(charc)◆voidwriteChars(Strings)◆voidwriteDouble(doubled)◆voidwriteFloat(floatf)◆voidwriteInt(inti)◆voidwriteLong(longl)◆voidwriteShort(shorts)34和目前文件位置有关的方法◆voidseek(longpos):将文件指针移到pos(不可为负)的位置,相对于文件初始位置值(初始值为0)。◆longgetFilePointer():得到目前文件指针的位置(相对于文件初始位置)。◆longlength():得到文件的长度。◆intskipBytes(intn):使文件指针向前移动指定的n个字节【例15.15】文件的随机访问31在java中,类RandomAccess其他常用的流

33343132管道流ZIP文件流DataInputStream和DataOutputStream

对象流其他常用的流33343132管道流ZIP文件流DataI综合案例

【例15.16】下面的代码实现了一个简单的文件编辑器importjava.awt.*;importjava.awt.event.*;importjava.io.*;publicclassFileEditextendsWindowAdapterimplementsActionListener,TextListener{Framef;TextAreata1;Panelp1;TextFieldtf1;Buttonb1,b2,b3;FileDialogfd;Filefile1=null;publicstaticvoidmain(Stringargs[]){(newFileEdit()).display();}综合案例【例15.16】下面的代码实现了一个简单的文件编辑综合案例(续)publicvoiddisplay(){f=newFrame("FileEdit");f.setSize(680,400);f.setLocation(200,140);f.setBackground(Color.lightGray);f.addWindowListener(this);tf1=newTextField();tf1.setEnabled(false);tf1.setFont(newFont("Dialog",0,20));//设置文本行的初始字体

f.add(tf1,"North");ta1=newTextArea();ta1.setFont(newFont("Dialog",0,20));//设置文本区的初始字体

f.add(ta1);ta1.addTextListener(this);//注册文本区的事件监听程序

p1=newPanel();p1.setLayout(newFlowLayout(FlowLayout.LEFT));

综合案例(续)publicvoiddisplay(){综合案例(续)b1=newButton("Open");b2=newButton("Save");b3=newButton("SaveAs");p1.add(b1);p1.add(b2);p1.add(b3);b2.setEnabled(false);b3.setEnabled(false);b1.addActionListener(this);//注册按钮的事件监听程序

b2.addActionListener(this);b3.addActionListener(this);f.add(p1,"South");f.setVisible(true);}publicvoidtextValueChanged(TextEvente){//实现TextListener接口中的方法,对文本区操作时触发

b2.setEnabled(true);b3.setEnabled(true);}综合案例(续)b1=newButton("Open"综合案例(续)publicvoidactionPerformed(ActionEvente){if(e.getSource()==b1){//单击[打开]按钮时

fd=newFileDialog(f,"Open",FileDialog.LOAD);fd.setVisible(true);//创建并显示打开文件对话框if((fd.getDirectory()!=null)&&(fd.getFile()!=null)){tf1.setText(fd.getDirectory()+fd.getFile());try//以缓冲区方式读取文件内容{file1=newFile(fd.getDirectory(),fd.getFile());FileReaderfr=newFileReader(file1);BufferedReaderbr=newBufferedReader(fr);Stringaline;while((aline=br.readLine())!=null)//按行读取文本

ta1.append(aline+"\r\n");fr.close();br.close();}catch(IOExceptionioe){System.out.println(ioe);}}}综合案例(续)publicvoidactionPerfo综合案例(续)if((e.getSource()==b2)||(e.getSource()==b3)){//单击[保存]按钮时

if((e.getSource()==b3)||(e.getSource()==b2)&&(file1==null)){//单击[SaveAs]按钮时,或单击[Save]按钮且文件对象为空时

fd=newFileDialog(f,"Save",FileDialog.SAVE);if(file1==null)fd.setFile("Edit1.txt");elsefd.setFile(file1.getName());fd.setVisible(true);//创建并显示保存文件对话框

if((fd.getDirectory()!=null)&&(fd.getFile()!=null)){tf1.setText(fd.getDirectory()+fd.getFile());file1=newFile(fd.getDirectory(),fd.getFile());save(file1);}}综合案例(续)if((e.getSource()==b2综合案例(续)elsesave(file1);}}publicvoidsave(Filefile1){try{//将文本区内容写入字符输出流

FileWriterfw=newFileWriter(file1);fw.write(ta1.getText());fw.close();b2.setEnabled(false);b3.setEnabled(false);}catch(IOExceptionioe){System.out.println(ioe);}}publicvoidwindowClosing(WindowEvente){System.exit(0);}}综合案例(续)else综合案例(续)程序运行结果综合案例(续)程序运行结果简答练习题353633343132利用输入输出流编写程序,实现文件拷贝的功能。编写程序,实现在屏幕上显示文本文件的功能。有哪些常用的字节流和字符流,他们的主要区别是什么?对字节流和字符流进行读写操作的一般步骤是什么?File类有哪些构造方法和常用方法?编写程序,从键盘输入一串字符,从屏幕输出并将其存入a.txt文件中。简答练习题353633343132利用输入输出流编写程序,实【例15.1】标准输入输出举例——标准输入输出输入输出流的分类importjava.io.*;publicclassIODemo{publicstaticvoidmain(Stringargs[])throwsIOException{intb;intcount=0;while((b=System.in.read())!=-1){count++;System.out.print((char)b);}System.out.println();System.out.println("programend");}}程序运行如下:输入:a,b,c,d输出:a,b,c,d输入:^Z输出:programend【例15.1】标准输入输出举例——标准输入输出输入输出流【例15.2】对Test.txt及其上一级目录的File类对象进行操作

目录和文件管理

——File类importjava.io.*;publicclassfileTest//创建一个文件

{publicstaticvoidmain(Stringargs[]){Filef=newFile("parent\\fileTest.txt");Filef1=newFile("newfileTest.txt");try{System.out.println(f.getParent());System.out.println(f.getName());System.out.println(f1.getPath());System.out.println(f1.getAbsolutePath());}catch(Exceptione){e.printStackTrace();}}}程序运行结果【例15.2】对Test.txt及其上一级目录的File类对【例15.3】建立

test.txt

文件对象,判断是否存在,如果不存在就创建之importjava.io.*;publicclassCreateNewFile{publicstaticvoidmain(Stringargs[]){Filef=newFile("test.txt");try{if(!f.exists())f.createNewFile();elseSystem.out.println("exists");}catch(Exceptione){e.printStackTrace();}}}程序运行结果目录和文件管理

——File类【例15.3】建立

test.txt

文件对象,判断是否存在【例15.4】创建文件夹Dir以及文件夹dir/cdir。目录和文件管理

——File类importjava.io.*;publicclassCreateDir{publicstaticvoidmain(Stringargs[]){Filef=newFile("test.txt");Filef1=newFile("Dir");Filef2=newFile("dir/cdir");Filef3=newFile("newTest.txt");try{f.renameTo(f3);//把test.txt改名为newTest.txtf1.mkdir();//创建目录Dirf2.mkdirs();//创建目录dir及其子目录cdir}catch(Exceptione){e.printStackTrace();}}}程序运行结果【例15.4】创建文件夹Dir以及文件夹dir/cdir。目【例15.5】使用File类的方法获取文件file.txt的属性信息目录和文件管理

——File类的应用importjava.io.*;publicclassfile{publicstaticvoidmain(String[]args){Filefl=newFile("file.txt");System.out.println("Thefileisexist?"+fl.exists());System.out.println("Thefilecanwrite?"+fl.canWrite());System.out.println("Thefilecanread?"+fl.canRead());System.out.println("Thefileisafile?"+fl.isFile());System.out.println("Thefileisadirectory?"+fl.isDirectory());System.out.println("Thefile'snameis:"+fl.getName());System.out.println("Thefile'sallpathis:"+fl.getAbsolutePath());System.out.println("Thefile'slengthis"+fl.length());} }程序运行结果【例15.5】使用File类的方法获取文件file.txt的【例15.6】列出Dir目录下的所有文件和目录(Stringlist()),最后修改时间;若为目录则在其后面标出<DIR>,若为文件,则在其后面标出文件长度(提示:方法long

lastModified()能够返回自1970.1.1起

到最后修改时间之间的秒数)importjava.io.*;importjava.util.*;publicclasstestDir{publicstaticvoidmain(Stringargs[]){Filef=newFile("Dir");String[]listAll=null;Filetemp=null;try{listAll=f.list();for(inti=0;i<listAll.length;i++){temp=newFile(listAll[i]);System.out.print(listAll[i]+"\t");if(temp.isDirectory())System.out.print("\t<DIR>\t");elseSystem.out.print(temp.length()+"\t");System.out.println(newDate(temp.lastModified()));}}catch(Exceptione){e.printStackTrace();}}}目录和文件管理

——File类的应用程序运行结果【例15.6】列出Dir目录下的所有文件和目录(String字节流【例15.7】将FileIO.java复制为FileExam.java.bakimportjava.io.*;publicclassFileIO{publicstaticvoidmain(Stringargs[]){FileInputStreaminFile=null;FileOutputStreamoutFile=null;try{inFile=newFileInputStream("FileIO.java");outFile=newFileOutputStream("FileExam.java.bak");

intdate;while((date=inFile.read())!=-1){outFile.write(date);}

}catch(FileNotFoundExceptione){System.out.println(e.getMessage());}catch(IOExceptione){System.out.println(e.getMessage());}finally{if(inFile!=null){try{inFile.close();}catch(IOExceptione){}}if(outFile!=null){try{outFile.close();}catch(IOExceptione){}}

}}}程序运行结果【解题分析】以下问题的求解过程可分解如下:①先打开文件FileExam.java②用read()将其内容逐字节读取出来(如果返回值为-1,则表明已到达文件尾端)③再用write()将读出的字节逐一写入另一个文件FileExam.java.bak中④若文件无法打开(例如FileExam.java不存在)或无法生成(FileExam.java.bak),则抛出FileNotFoundException异常,若读写出错,则抛出IOException异常。⑤最后,在finally中关闭文件。字节流【例15.7】将FileIO.java复制为FileE【例15.8】程序读入文件ByteIO.java,将其内容写入内存中(一个字节数组),接着转换为String对象,并将该String对象内的令牌解析出来字节流importjava.io.*;importjava.util.*;publicclassByteIO{publicstaticvoidmain(Stringargs[]){try{FileinFile=newFile("FileIO.java");FileInputStreaminData=newFileInputStream(inFile);ByteArrayOutputStreamdataArray=newByteArrayOutputStream();intdata;while((data=inData.read())!=-1){dataArray.write(data);}inData.close();StringdataStr=dataArray.toString();StringTokenizertokens=newStringTokenizer(dataStr);while(tokens.hasMoreTokens()){System.out.println(tokens.nextToken());}}catch(IOExceptione){System.out.println(e.getMessage());}}}程序运行结果【例15.8】程序读入文件ByteIO.java,将其内容写【例15.9】文件拷贝的缓冲改进

字节流//文件拷贝的缓冲改进importjava.io.*;publicclassCopy{publicstaticvoidmain(Stringargs[]){BufferedInputStreambis=null;BufferedOutputStreambos=null;bytebuf[]=newbyte[100];try{bis=newBufferedInputStream(newFileInputStream("test.txt"));bos=newBufferedOutputStream(newFileOutputStream("testcopy.txt"));intlen=0;while(true){len=bis.read(buf);if(len<=0)break;bos.write(buf,0,len);}bos.flush();//缓冲区只有满时才会将数据输出到输出流,用flush()将未满的缓冲区中数据强制输出

}catch(Exceptione){e.printStackTrace();}finally{if(bis!=null)try{bis.close();}catch(Exceptione){e.printStackTrace();}if(bos!=null)try{bos.close();}catch(Exceptione){e.printStackTrace();}}}}程序运行结果【例15.9】文件拷贝的缓冲改进字节流//文件拷贝的缓冲改【例15.10】利用InputStreamReader从键盘接受输入,再将输入的字符显示出来字符流

importjava.io.*;classinputstreamreader{publicstaticvoidmain(Stringargs[]){try{intcharacter;InputStreamReaderinstreamread=newInputStreamReader(System.in);//InputStreamReader以字符形式读取输入

while((character=instreamread.read())!=-1){System.out.print((char)character);}}catch(IOExceptione){}}System.out.print(“Bye”);}程序运行结果如下:输入:a,b,c,d输出:a,b,c,d输入:1,2,3,4输出:1,2,3,4输入:^Z输出:Bye【例15.10】利用InputStreamReader从键盘【例15.11】下例中打开一个文件file.txt(内容为:Hellofromfile),将文件的内容读到缓冲区,然后显示数据字符流

importjava.io.*;publicclassfileread{publicstaticvoidmain(Stringargs[])throwsException{ FileReaderfileread=newFileReader("file.txt");//打开文件

chardata[]=newchar[1024]; intcharsread=fileread.read(data);//读入

System.out.println(newString(data,0,charsread));//显示

fileread.close();//关闭文件流}}程序运行结果【例15.11】下例中打开一个文件file.txt(内容为:字符流【例15.12】下例中,分别采用三种方式:逐字符地写数据、一次写入所有数据、分批写数据,使用类FileWriterimportjava.io.*;publicclassfilewrite{publicstaticvoidmain(Stringargs[])throwsException{chardata[]={'T','h','i','s','','i','s','','a','','s','t','r','i','n','g','','o','f',''

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论