Java程序设计实训教程课件10文件_第1页
Java程序设计实训教程课件10文件_第2页
Java程序设计实训教程课件10文件_第3页
Java程序设计实训教程课件10文件_第4页
Java程序设计实训教程课件10文件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

本章内容

输入输出流字符输入输出文件管理

字节输入流

InputStreamPushbackInputStreamByteArrayInputStreamStringBufferInputStreamFileInputStreamPipedInputStreamSequenceInputStreamFilterStreamDataInputStreamBufferedInputStreamLineNumberInputStream类描述ByteArrayInputStream以内存的一个缓冲区当作InputStream使用StringBufferInputStream将String转化为InputStreamFileInputStream读取文件中的信息PipedInputStream常用作多线程环境中的数据源SequenceInpuStream将两个或多个InputStream转为单一的InputStreamFilterInputStream是抽象类,作为其他装饰类的接口。DataInputStream和DataOutputStream协同应用,可从stream读入基本类型BufferedInputStream缓冲读,减少读次数LineNumberInputStream它会记录stream内的行数。PushbackInputStream它会送最后一个字节,一般用于编译器。importjava.awt.*;importjava.awt.event.*;importjava.io.*;publicclassReadFileextendsFrameimplementsActionListener{

FileDialogm_fd;TextFieldm_txtFilename=newTextField(10);Labelm_lblChoosefile=newLabel("选择文件:");Buttonm_btnChoose=newButton("浏览");TextAream_txtareaFilecontent=newTextArea(10,20);Stringm_sTemp;

StringBufferm_buf=newStringBuffer();ReadFile(){this.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});this.setLayout(newFlowLayout());add(m_lblChoosefile);add(m_txtFilename);add(m_btnChoose);add(m_txtareaFilecontent);

m_btnChoose.addActionListener(this);setSize(500,250);setVisible(true);}publicvoidactionPerformed(ActionEvente){Stringcmd=e.getActionCommand();if(cmd=="浏览"){

m_txtareaFilecontent.setText(null); m_buf.delete(0,m_buf.length());

m_fd=newFileDialog(this,"打开文件",FileDialog.LOAD);

m_fd.setDirectory("c:\\");m_fd.setVisible(true);

m_sTemp=m_fd.getDirectory()+m_fd.getFile();m_txtFilename.setText(m_sTemp);try{

BufferedInputStreambi=newBufferedInputStream(newFileInputStream(m_sTemp));

while(bi.available()!=0){chara=(char)bi.read();m_buf.append(a);}

bi.close();m_txtareaFilecontent.setText(m_buf.toString());}catch(Exceptionee){}}//if}//actionPerformed()publicstaticvoidmain(String[]args){newReadFile();}}字节输出流OutputStreamByteArrayOutputStreamFileOutputStreamPipedOutputStreamFilterStreamDataOutputStreamBufferedOutputStreamPrintStream类描述ByteArrayOutputStream建立一块内存缓冲区,所有送至此Stream的数据都会被置于该缓冲区内FileOutputStream将信息写入文件PipedOutputStream常用作多线程环境中的数据源FilterOutputStream是抽象类,作为其他装饰类的接口。DataOutputStream和DataInputStream协同应用,可将各种基本类型数据写至streamBufferedOutputStream缓冲写,减少写次数,可以调用flush函数清除缓冲区内容PrintStream产生格式化输出结果。publicvoidactionPerformed(ActionEvente){Stringcmd=e.getActionCommand();if(cmd=="浏览"){ m_fd=newFileDialog(this,"打开文件",FileDialog.LOAD);m_fd.setDirectory("c:\\");m_fd.setVisible(true);

inFilename=m_fd.getDirectory()+m_fd.getFile();m_txtFilename.setText(inFilename);try{BufferedInputStreambi=newBufferedInputStream(newFileInputStream(inFilename));

outFilename=m_fd.getDirectory()+"b.txt";

BufferedOutputStreambo=newBufferedOutputStream(newFileOutputStream(outFilename));while(bi.available()!=0){chara=(char)bi.read();m_buf.append(a);

bo.write(a);}m_txtareaFilecontent.setText(m_buf.toString());bi.close();bo.close();}catch(Exceptionee){}}}字符输入输出Reader和Writer提供了基于字符的IO(character-based)。基于字节的流无法正确处理基于16位的unicode字符,经常出现乱码,Reader和Writer在所有IO操作上提供对unicode的支持。publicvoidactionPerformed(ActionEvente){Stringcmd=e.getActionCommand();if(cmd=="浏览"){ m_fd=newFileDialog(this,"打开文件",FileDialog.LOAD);m_fd.setDirectory("c:\\");m_fd.setVisible(true);inFilename=m_fd.getDirectory()+m_fd.getFile();m_txtFilename.setText(inFilename);try{

BufferedReaderbr=newBufferedReader(newFileReader(inFilename));

outFilename=m_fd.getDirectory()+"b.txt";

BufferedWriterbw=newBufferedWriter(newFileWriter(outFilename));Strings;

while((s=br.readLine())!=null){m_buf.append(s);}

bw.write(m_buf.toString());br.close();bw.close();m_txtareaFilecontent.setText(m_buf.toString());}catch(Exceptionee){}}}文件管理调用File类方法可完成对文件或目录的常用操作,如创建、删除和重命名等,不涉及文件的读写操作创建File类对象

File(Stringfilename);

filename指File对象对应的文件或目录名及其路径,路径可以是相对路径,相对路径认为与当前应用程序在同一目录下绝对路径如:E:\\test\\a.txtFile(Stringdirectorypath,Stringfilename);

filename是文件名字File(Filef,Stringfilename);

f是一个指定成目录的文件

获取文件或目录属性判断文件或目录是否存在

publicbooleanexists();判断是文件还是目录

publicbooleanisFile();

publicbooleanisDirectory();获取文件或目录名称和路径

publicStringgetName();

publicStringgetPath();获取文件长度

publiclonglength();获取文件读写属性

publicbooleancanRead();

publicbooleancanWrite();列出目录中的文件

publicString[]list();比较两个文件或目录

publicbooleanequals(Filef);文件或目录操作重命名文件

publicbooleanrenameTo(Filenewfile);删除文件

publicvoiddelete();创建目录

publicbooleanmkdir();importjava.io.*;importjava.util.*;publicclassfile{publicstaticvoidmain(String[]args){Stringm_sFilename;try{

BufferedReaderbin=newBufferedReader(newInputStreamReader(System.in));while(true){System.out.println("请输入文件或目录名称(QUIT退出):");m_sFilename=bin.readLine();

if(m_sFilename.equalsIgnoreCase("quit")){bin.close();break;}

Filef=newFile(m_sFilename);

if(f.isFile()){

BufferedReaderfin=newBufferedReader(newFileReader(f));Strings;

System.out.println("文件名称:"+f.getName());System.out.println("文件日期:"

+new

Date(f.lastModified()).toString());System.out.println("文件大小:"+f.length());System.out.println("文件内容如下:");System.out.println("-----------------------------------");

while((s=fin.readLine())!=null)System.out.println(s);System.out.println("-----------------------------------");

fin.close();}

elseif(f.isDirectory()){String[]files=f.list();System.out.println("目录文件列表:");System.out.println("-----------------------------------");

for(inti=0;i<files.length;i++)System.out.println(files[i]);System.out.println("-----------------------------------");}}}catch(Exceptione){}System.out.println("再见!");}}文件随机访问FileInputStream和FileOutputStream实现了对磁盘文件的顺序读写,JAVA同时提供了对文件的随机访问RandomAccessFile。创建RandomAccessFile类的对象RandomAccessFile(Stringname,Stringmode);

name指明创建的RandomAccessFile对象对应的文件及其路径,路径可以是相对

mode指明打开文件方式,“r”,“rw”

RandomAccessFile(Filedir,Stringmode);

dir表示所对应文件的File对象

mode指明打开文件方式,“r”,“rw”

对文件位置指针的操作

新建对象,文件指针在文件开头处;

随着读写操作,文件位置指针都相应后移读写的字节数。获取指针位置

publiclonggetPointer();//返回当前位置相对文件头算起的绝对位置移动指针

publicvoidseek(longpos);//将指针移动到相对文件头的pos值指定位置获取文件大小

publiclonglength();//返回文件长度(字节数)读文件实现了DataInput接口,多种方法读取不同类型的数据:readBoolean();readChar();readInt();readByte();readLine();……写文件实现了DataOutput接口,针对不同类型数据提供多种输出方法:

writeBoolean();writeChar();writeInt();writeByte();

importjava.io.*;importjava.util.*;publicclassFile2{publicstaticvoidmain(String[]args){Stringm_sFilename;try{

BufferedReaderin=newBufferedReader(newInputStreamReader(System.in));while(true){System.out.println("请输入文件名称(QUIT退出):");

m_sFilename=in.readLine();if(m_sFilename.equalsIgnoreCase("quit")){in.close();break;}RandomAccessFileraf=newRandomAccessFile(m_sFilename,"rw");System.out.println("文件内容如下:");System.out.println("-----------------------------------");

while(raf.getFilePointer()<raf.length())System.out.println(raf.readLine());System.out.println("-----------------------------------");raf.close();}}catch(Exceptione){

System.out.println(e.getMessage());}System.out.println("再见!");}}声明窗口类ReadFile,在窗口中输入用户名和密码,并将用户名和密码保存到文件Secret.txt中。思考题importjava.awt.*;importjava.awt.event.*;importjava.io.*;publicclassReadFileextendsFrameimplementsActionListener{Labelm_id=newLabel("用户名:");Labelm_key=newLabel("密码:");Buttonm_input=newButton("存入");TextFieldId=newTextField(10);TextFieldKeyid=newTextField(10);StringoutFilename;StringBufferm_buf=newStringBuffer();ReadFile(){th

温馨提示

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

评论

0/150

提交评论