201711671106《Java程序设计》第十章总结

第十章输入、输出流学习内容总结

输入流:从外部的存储媒介或程序读入数据,程序通过输入流读取源中的数据。

输出流:将处理的结果写入到永久的存储媒介中或传送给其他程序,程序通过输出流传向目的地。

java.io包提供大量的流类,所有输入流都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类,而所有的输出流都是抽象类OutputSteam(字节流)或抽象类Writer(字符输出流)的子类。

File类:用与获取文件信息 三个构造方法:1.File(String filename)2.File(String directoryPath,String filename)3.File(File dir,String filename),filename-文件名字,directoryPath-文件的路径,dir-目录

文件属性:获取文件信息的方法见P282

目录:

创建目录:public boolean mkdir(),成功返回true,否则false

列出目录中的文件:public String[]list 用字符串形式返回目录下的所有文件;  public File[]listFiles() 用File对象形式返回目录下的全部文件。若要返回指定类型 则要public String[]list(FilenameFilter obj) 用字符串形式返回目录下的指定类型所有文件或者  public File[]listFiles(FilenameFilter obj) 用File对象形式返回目录下的指定类型全部文件。

其中上述方法中FilenameFilter 为一个接口,在list方法执行时参数obj不断回调接口方法accpet(File dir,String name)dir是当前目录的dirFile,name是目录中的一个文件名,当返回true时候将名字为name的文件返回数组中。

文件的创建与删除:

当使用File类创建一个文件对象后,如File file=new File(“C:\\\”,"letter.txt"),若目录中没有对应的文件,则可以调用createNewFile()创建文件,可以delete()删除当前文件。

运行可执行文件:

步骤:①使用java.lang包中的Runtime类,先声明对象 Runtime ec,然后使用该类的getRuntime()静态方法创建这个对象 ec=Runtime.getRuntime();,然后ec调用exec(String command)打开文件

文件字节输入流

四个步骤:①设定输入流的源②创建指向源的输入流3.输入流读取数据④关闭输入流

1.用FileInputStream(String name)/FileInputStream(File file)创建输入流

2.使用输入流读取字节 三个方法 read() read(byte b[]),read(byte b[],int off,int len)

3.关闭流 close()

文件字节输出流

四个步骤:①设定输出流的源②创建指向目的地的输出流 3.输出流写入数据④关闭输出流

1.用FileOutputStream(String name)/FileOutputStream(File file)创建输入流

2.使用输出流读取字节 三个方法 write() write(byte b[]),write(byte b[],int off,int len)

3.关闭流 close()

文件字符输入、输出流

因为字节流不能很好操作字符,则要用字符流。

FileInputStream、FileOutputStream分别对应FileReader和FileWriter

缓冲流

BUfferedReader和BufferedWriter类创建的对象称为缓冲输入、输出流,增强文件的读写能力。

BufferedReader用readLine()读取文本行   BUfferedWriter用newLine()写入方法

以上两个方法称为上层流,指向的字符流是底层流,java采用缓存技术将上层流与底层流连接。

随机流 P293常用方法

用RandomAccessFile创建,不是InputStream和OutStream的子类。

构造方法 1.RandomAccessFile(String name,String mode),name确定文件名,mode确定访问权利

2.RandomAccessFile(File file,String mode)参数是file对象,是源与目的地。

定为RandomAccessFile流的读写方法 seek(long a) ;getFilePointer()获取当前读写位置。

数组流

字节数组输入流ByteArrayInputStream和输出流ByteArrayOutputStream分别使用字节数组作为流的源和目的地,构造方法:

ByteArrayInputStream(byte ()buf),ByteArrayInputStream(byte ()buf,int offset,int,length);

字符数组流CharArrayReader()和CharArrayWritter类

数据流 DataInputStream和DataOutputSteam类创建的对象称为数据输入流与输出流

构造方法:DataInputStream(InputStream in)创建的数据输入流指向一个由参数in的底层输入流

DataOutputStream(OutputStream out)创建的数据输出流指向一个由参数out指定的底层输出流   其他方法见P298

对象流 ObjectInputStream和ObjectOutputStream 

分别使用writeobject(object ob)和readobject写入和读取对象

构造方法ObjectInputStream(InputStream in)ObjectOutputStream (OutputStream out)

序列化与对象克隆:若一个类和两个对象如果有相同的引用,则有相同的实体与功能

使用scanner解析文件

一:使用默认分隔标记解析文件:File file=new file(“hello,java”);  Scanner sc=new scanner(file)空格作为标记,用next()方法返回file的单词,若最后一个单词被返回,则放回ture。

二:使用正则表达式解析文件:File file=new file(“hello,java”);  Scanner sc=new scanner(file);sc.useDelimiter(正则表达式);

猜你喜欢

转载自blog.csdn.net/Vring_Jan/article/details/84843708