《输入输出流File类》PPT课件.ppt

上传人:sh****n 文档编号:11513066 上传时间:2020-04-26 格式:PPT 页数:39 大小:322.50KB
返回 下载 相关 举报
《输入输出流File类》PPT课件.ppt_第1页
第1页 / 共39页
《输入输出流File类》PPT课件.ppt_第2页
第2页 / 共39页
《输入输出流File类》PPT课件.ppt_第3页
第3页 / 共39页
点击查看更多>>
资源描述
第14章,输入输出档案位串流字符串流,File类别,不同的操作系统对于文件系统路径的设定各有差别WindowsLinux,C:WorkspaceCH14,/home/justin/workspace/ch14,File类别,File实例用作一个档案或目录的抽象表示,Filefile=newFile(args0);if(file.isFile()/是否为档案System.out.println(args0+檔案);System.out.print(file.canRead()?可读:不可读);System.out.print(file.canWrite()?可写:不可写);System.out.println(file.length()+位組);,File类别,else/列出所有的档案及目录Filefiles=file.listFiles();ArrayListfileList=newArrayList();for(inti=0;ifiles.length;i+)/先列出目录if(filesi.isDirectory()/是否为目录/取得路径名System.out.println(+filesi.getPath()+);else/档案先存入fileList,待会再列出fileList.add(filesi);,File类别,/列出档案for(Filef:fileList)System.out.println(f.toString();System.out.println();,RandomAccessFile类别,Filefile=newFile(args0);/建立RandomAccessFile实例并以读写模式开启档案RandomAccessFilerandomAccessFile=newRandomAccessFile(file,rw);for(inti=0;istudents.length;i+)/使用对应的write方法写入数据randomAccessFile.writeChars(studentsi.getName();randomAccessFile.writeInt(studentsi.getScore();,RandomAccessFile类别,/使用seek()方法操作存取位置randomAccessFile.seek(num-1)*Student.size();Studentstudent=newStudent();/使用对应的read方法读出数据student.setName(readName(randomAccessFile);student.setScore(randomAccessFile.readInt();System.out.println(姓名:+student.getName();System.out.println(分数:+student.getScore();/设定关闭档案randomAccessFile.close();,RandomAccessFile类别,privatestaticStringreadName(RandomAccessFilerandomAccessfile)throwsIOExceptioncharname=newchar15;for(inti=0;iname.length;i+)namei=randomAccessfile.readChar();/将空字符取代为空格符并传回returnnewString(name).replace(0,);,RandomAccessFile类别,读写档案时几个必要的流程开启档案并指定读写方式使用对应的写入方法使用对应的读出方法关闭档案,InputStream、OutputStream,数据流动抽象化为一个串流(Stream),InputStream、OutputStream,InputStream是所有表示位输入串流的类别之父类别System中的标准输入串流in对象就是一个InputStream类型的实例OutputStream是所有表示位输出串流的类别之父类别System中的标准输出串流对象out其类型是java.io.PrintStream,OutputStream的子类别,InputStream、OutputStream,很少直接操作InputStream或OutputStream上的方法,这些方法比较低阶通常会操作它们的子类别,trySystem.out.print(输入字元:);System.out.println(输入字符十进制表示:+System.in.read();catch(IOExceptione)e.printStackTrace();,FileInputStream、FileOutputStream,建立FileInputStream或FileOutputStream的实例时,必须指定档案位置及文件名,实例被建立时档案的串流就会开启不使用串流时,您必须关闭档案串流,以释放与串流相依的系统资源,FileInputStreamfileInputStream=newFileInputStream(newFile(args0);FileOutputStreamfileOutputStream=newFileOutputStream(newFile(args1);fileInputStream.close();fileOutputStream.close();,FileInputStream、FileOutputStream,while(true)if(fileInputStream.available()1024)/剩余的资料比1024字节少/一位一位读出再写入目标文件intremain=-1;while(remain=fileInputStream.read()!=-1)fileOutputStream.write(remain);break;else/从来源档案读取数据至缓冲区fileInputStream.read(buffer);/将数组数据写入目标文件fileOutputStream.write(buffer);,FileInputStream、FileOutputStream,以附加的模式来写入档案,FileOutputStreamfileOutputStream=newFileOutputStream(args1,true);,BufferedInputStream、BufferedOutputStream,BufferedInputStream的资料成员buf是个位数组,默认为2048字节BufferedOutputStream的资料成员buf是个位数组,默认为512个字节,BufferedInputStream、BufferedOutputStream,BufferedInputStreambufferedInputStream=newBufferedInputStream(newFileInputStream(srcFile);BufferedOutputStreambufferedOutputStream=newBufferedOutputStream(newFileOutputStream(desFile);System.out.println(复制档案:+srcFile.length()+字节);while(bufferedInputStream.read(data)!=-1)bufferedOutputStream.write(data);/将缓冲区中的数据全部写出bufferedOutputStream.flush();/关闭串流bufferedInputStream.close();bufferedOutputStream.close();,BufferedInputStream、BufferedOutputStream,BufferedInputStream、BufferedOutputStream并没有改变InputStream或OutputStream的行为只是在操作对应的方法之前,动态的为它们加上一些是缓冲区功能,DataInputStream、DataOutputStream,DataOutputStreamdataOutputStream=newDataOutputStream(newFileOutputStream(args0);for(Membermember:members)/写入UTF字符串dataOutputStream.writeUTF(member.getName();/写入int资料dataOutputStream.writeInt(member.getAge();/出清所有数据至目的地dataOutputStream.flush();/关闭串流dataOutputStream.close();,提供一些对Java基本数据型态写入的方法,DataInputStream、DataOutputStream,DataInputStreamdataInputStream=newDataInputStream(newFileInputStream(args0);/读出数据并还原为对象for(inti=0;i0)list.add(User)objInputStream.readObject();objInputStream.close();,ObjectInputStream、ObjectOutputStream,/附加模式ObjectOutputStreamobjOutputStream=newObjectOutputStream(newFileOutputStream(file,true)/如果要附加对象至档案后/必须重新定义这个方法protectedvoidwriteStreamHeader()throwsIOException;for(Objectobj:objs)/将对象写入档案objOutputStream.writeObject(obj);objOutputStream.close();,SequenceInputStream,可以看作是数个InputStream对象的组合当一个InputStream对象的内容读取完毕后,它就会取出下一个InputStream对象,直到所有的InputStream物件都读取完毕,SequenceInputStream,/建立SequenceInputStream/并使用BufferedInputStreamBufferedInputStreambufInputStream=newBufferedInputStream(newSequenceInputStream(enumation),8192);BufferedOutputStreambufOutputStream=newBufferedOutputStream(newFileOutputStream(filename),8192);bytedata=newbyte1;/读取所有档案数据并写入目的地档案while(bufInputStream.read(data)!=-1)bufOutputStream.write(data);bufInputStream.close();bufOutputStream.flush();bufOutputStream.close();,PrintStream,使用java.io.PrintStream可以自动为您进行字符转换的动作默认会使用操作系统的编码来处理对应的字符转换动作,PrintStreamprintStream=newPrintStream(newFileOutputStream(newFile(test.txt);printStream.println(1);printStream.close();,ByteArrayInputStream、ByteArrayOutputStream,ByteArrayInputStream可以将一个数组当作串流输入的来源ByteArrayOutputStream则可以将一个位数组当作串流输出的目的地,PushbackInputStream,拥有一个PushBack缓冲区从PushbackInputStream读出数据后,只要PushBack缓冲区没有满,就可以使用unread()将资料推回串流的前端,Reader、Writer,在处理串流数据时,会根据系统默认的字符编码来进行字符转换Reader、Writer是抽象类,在进行文本文件的字符读写时真正会使用其子类别可以直接在建构Reader的实例时,自行指定读取时的编码,InputStreamReaderreader=newInputStreamReader(byteArrayStream,Big5);,InputStreamReader、OutputStreamWriter,要对InputStream、OutputStream进行字符处理,可以使用InputStreamReader、OutputStreamWriter为加上字符处理的功能,FileInputStreamfileInputStream=newFileInputStream(args0);/为FileInputStream加上字符处理功能InputStreamReaderinputStreamReader=newInputStreamReader(fileInputStream);FileOutputStreamfileOutputStream=newFileOutputStream(backup_+args0);/为FileOutputStream加上字符处理功能OutputStreamWriteroutputStreamWriter=newOutputStreamWriter(fileOutputStream);,InputStreamReader、OutputStreamWriter,intch=0;/以字符方式显示档案内容while(ch=inputStreamReader.read()!=-1)System.out.print(char)ch);outputStreamWriter.write(ch);System.out.println();inputStreamReader.close();outputStreamWriter.close();,可以自行指定字符编码,InputStreamReaderinputStreamReader=newInputStreamReader(fileInputStream,Big5);,FileReader、FileWriter,想要存取的是一个文本文件,可直接使用java.io.FileReader、java.io.FileWriter类别,FileReaderfileReader=newFileReader(args0);FileWriterfileWriter=newFileWriter(args0+.txt);intin=0;charwlnChar=r,n;while(in=fileReader.read()!=-1)if(in=n)/写入rnfileWriter.write(wlnChar);elsefileWriter.write(in);fileReader.close();fileWriter.close();,BufferedReader、BufferedWriter,System.in是个位串流,为了转换为字符串流,可使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能,BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in);,BufferedReader、BufferedWriter,/缓冲FileWriter字符输出串流BufferedWriterbufWriter=newBufferedWriter(newFileWriter(args0);Stringinput=null;/每读一行进行一次写入动作while(!(input=bufReader.readLine().equals(quit)bufWriter.write(keyin);/newLine()方法写入与操作系统相依的换行字符bufWriter.newLine();,PrintWriter,除了接受OutputStream实例作为自变量之外,PrintWriter还可以接受Writer对象作为输出的对象,CharArrayReader、CharArrayWriter,可以将字符数组当作字符数据输出或输入的来源,PushbackReader,拥有一个PushBack缓冲区,只不过PushbackReader所处理的是字符只要PushBack缓冲区没有满,就可以使用unread()将资料回推回串流的前端,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!