教材学习内容总结
1.输入、输出流
输入流 | 输出流 |
OutPutStream类或Writer类的子类 | |
read()读入源中数据 | write()把数据写入目的地 |
2.File类
File类对象主要用于获取文件本身的信息
其中directoryPath是目录名,filename是文件名
构造方法 | |
File(String filename) | |
File(String directoryPath,String filename) | |
File(File dir,String filename) |
2.1文件属性
public String getName() | 获取文件名 |
public boolean canRead() | 判断文件是否可读 |
public boolean canWrite() | 判断文件是否可被写入 |
public boolean exists() | 判断文件是否存在 |
public long length() | 获取文件的长度(单位是字节) |
public String getAbsolutePath() | 获取文件的绝对路径 |
public String getParent() | 获取文件的父目录 |
public boolean isFlie() | 判断一个文件是否是一个普通文件,而不是目录 |
public boolean isDirectory() | 判断文件是否是一个目录 |
public boolean isHidden() | 判断文件是否是隐藏文件 |
public long lastModified() | 获取文件最后修改的时间 |
2.2目录
创建目录
File对象调用 | |
public boolean mkdir() | 创建成功返回true,反之亦然(目录已存在返回false) |
列出目录文件
public String[] list() | 字符串形式返回目录下的全部文件 |
public File[] listFiles()
扫描二维码关注公众号,回复:
4425177 查看本文章
|
用File对象形式返回目录下的全部文件 |
列出指定类型的文件
public String[] list(FilenameFilter obj) | 字符串形式返回目录下指定类型的全部文件 |
public File[] listFiles(FilenameFilter obj) | 用File对象形式返回目录下指定类型的全部文件 |
FilenameFilter 是一个接口,接口中的方法:
public boolean accept(File dir,String name)
2.3文件的创建与删除
文件对象 | File file=new File(“c:\\myletter”,”letter.txt“) | |
public boolean createNewFile() |
新建文件 | 没有letter.txt文件,file.createNewFile()新建 |
public boolean delete() |
删除当前文件 | file.delete() |
2.4运行可执行文件
要执行一个本地机器上的可执行文件,使用java.lang包中的Runtime类
声明+创建对象:Runtime ec=Runtime.getRuntime();
ce.exec(String command)打开本地机器上的可执行文件或执行一个操作。
3.文件字节输入/出流
使用流四个步骤
输入流 | 输出流 | |
设定源 | 给出目的地 | |
创建输入流 | 创建输出流 | |
读取数据 | 把数据写入目的地 | |
关闭 | 关闭 |
构造方法
FileInputStream(String name) | 文件名创建FileInputStream流 | 参数file和name指定输入流的源 |
FileInputStream(File file) | File对象创建.... | |
zaitry-catch语句中的1try语句执行,IOException(IO异常) |
FileOutputStream(String name,【boolean append】) | 文件名创建FileOutputStream流 | append为true时不能刷新文件,在文件末尾开始写入数据; 参数file和name指定输出流的目的地 |
FileOutputStream(File file,【boolean append】) | File对象创建.... | |
zaitry-catch语句中的1try语句执行,IOException(IO异常) |
读取字节
int read() | 从源中读取单个字节的数据 |
int read(byte b[]) | 读取b.length个字节放到b[]中 |
int read(byte b[],int off,int len) | 指定从字节数组的某个位置开始存放读取的数据 |
写字节
void write(int n) | 向目的地写入单个字节的数据 |
void write(byte b[]) | 向目的地写入一个字节数组 |
void write(byte b[],int off,int len) | 起始位置为off处取len个字节写到目的地 |
关闭流
in.close()
4.文件输入输出流
构造方法
FileReader(String filename||File filename) | 输入流 |
FileWriter(String filename||File filename) | 输出流 |
FileReader(String filename,boolean append) | |
FileWriter(String filename,boolean append) |
4.1Reader类提供的read方法以字符为单位顺序地读取源中的数据。
int read(); | int read(char b[]); |
int read(char b[], int off, int len); | void close(); |
long skip(long numBytes); |
4.2Writer流以字符为单位顺序地写文件,每次调用write方法就顺序地向目的地写入内容。
Writer类有如下常用的方法:
void write(int n) | 向输出流写入一个字符 |
void write(byte b[]) | 向输出流写入一个字符数组 |
void write(byte b[],int off,int length) | 从给定字符数组中起始于偏移量off处取len个字符写到输出流 |
void close() | 关闭输出流 |
输出流.flush() | 冲洗当前缓冲区,即把缓冲区的内容吸入到目的地 |
5.缓冲流
BufferedReader和BufferedWriter类创建的对象称作缓冲输入、输出流;二者的源和目的地必须是字符输入流和字符输出流。
5.1构造方法:
BufferedReader(Reader in); | 读取文本行 |
BufferedWriter (Writer out) | 将数据写到目的地 |
5.2BufferedReader和BufferedWriter类读写文件的方法:
readLine() | 读取文本行 |
write(String s,int off,int len) | 把字符串s写到文件中 |
newLine() | 向文件写入一个回行符 |
6 .随机流
使用RandomAccessFile类来创建一个随机访问文件流;RandomAccessFile类创建的流的指向既可以作为源也可以作为目的地。
6.1构造方法:
RandomAccessFile(String name,String mode) | 参数name确定文件名 | 参数mode取r(只读)或rw(可读写),决定创建的流对文件的访问权限 |
RandomAccessFile(File file,String mode) | 参数file给出创建的流的源(流目的地) |
6.2相关方法:
seek(long a) | 定位RandomAccessFile流的读写位置 |
getFilePointer() | 获取流的当前读写位置 |
7 .数组流
7.1字节数组流
字节数组输入流ByteArrayInputStream和字节数组输出流ByteArrayOutputStream分别使用字节数组作为流的源和目标。
ByteArrayInputStream构造方法及常用方法:
ByteArrayInputStream(byte[] buf) | 字节数组流的源是参数buf指定的数组的全部字节单元 |
ByteArrayInputStream(byte[] buf,int offset,int length) | 字节数组流的源是参数buf指定的数组从offset处按顺序取得length个字节单元 |
public int read() | 顺序地从源中读出一个字节 |
public int read(byte[] b,int off,int len) | 顺序地从源中读出参数len指定的字节数 |
7.2ByteArrayOutputStream流构造方法及常用方法
ByteArrayOutputStream() | 字节数组输出流指向一个默认大小为32字节的缓冲区 |
ByteArrayOutputStream(int size) | 字节数组输出流指向缓冲区的初始大小由参数size指定 |
public void write(int b) | 顺序地向缓冲区写入一个字节 |
public void write(byte[] b,int off,int len) | 将参数b中指定的len个字节顺序地写入缓冲区 |
public byte[] toByteArray() | 返回输出流写入到缓冲区的全部字节 |
7.3字符数组
CharArrayReader和CharArrayWriter类是字符数组流,使用字符数组作为流的源和目标。
8.数据流
DataInputStream和DataOutputStream类创建的对象称为数据输入流和数据输出流。
构造方法:
DataInputStream(InputStream in) | 创建的数据输入流指向一个由参数in指定的底层输入流 |
DataOutputStream(OutnputStream out) | 创建的数据输出流指向一个由参数out指定的底层输出流 |
9. 对象流
ObjectInputStream和ObjectOutputStream类创建的对象称为对象输入流和对象输出流。
构造方法:
* ObjectInputStream(InputStream in)
* ObjectOutputStream(OutputStream out)
相关方法:
writeObject(Object obj) | 将一个对象obj写入到一个文件 |
readObject() | 读取一个对象到程序中 |
所谓序列化:一个类如果实现了Serializable接口,那么这个类创建的对象就是所谓序列化的对象。
10 .序列化与对象克隆
如果一个“复制品”实体的变化不会引起原对象实体发生变化,反之亦然。这样的复制品称为原对象的一个克隆对象或简称克隆。
一个对象调用clone()方法就可以获取该对象的克隆对象。
对象输入流通过对象的序列化信息来得到当前对象的一个克隆。
11.使用Scanner解析文件
使用Scanner类和正则表达式来解析文件。
1.使用默认分隔标记解析文件//2.使用正则表达式作为分隔标记解析文件
创建Scanner对象,并指向要解析的文件//并使用useDelimiter方法指定正则表达式作为分隔标记,例如:
File file = new File(' hello. java") ;
Scanner sc = new Scanner(file) ;
sc将空白作为分隔标记//sc. useDelimi ter (正则表达式) ;
相关方法 next ()依次返回file中的单词
hasNext ()判断file最后一一个单词是否已被next ()方法返回
12.文件对话框
构造方法JFileChooser()创建初始不可见的有模式的文件对话框。
然后文件对话框调用下述2个方法:
showSaveDialog(Component a) | 使得对话框可见;参数a指定对话框可见时的位置,当a是null时,文件对话框出现在屏幕的中央;如果组件a不空,文件对话框在组件a的正前面居中显示 | 提供保存文件的界面 |
showOpenDialog(Component a) | 提供打开文件的界面 | |
13.带进度条的输入流
如果读取文件时希望看见文件的读取进度可以使用javax.swing包提供的输入流类:ProgressMonitorInputStream。
构造方法:
ProgressMonitorInputStream(Conmponent c,String s,InputStream);
14.文件锁
FileLock、FileChannel类处理Java提供的文件锁功能。它们分别在java.nio和java.nio.channels包中。
输入、输出流读写文件时可以使用文件锁。
RondomAccessFile创建的流在读写文件时使用文件锁的步骤如下:
14.1先使用RondomAccessFile流建立指向文件的流对象,该对象的读写属性必须是rw,例如:
RandomAccessFile input=new RandomAccessFile("Example.java","rw");
14.2input流调用方法getChannel()获得一个连接到地层文件的FileChannel对象(信道),例如
FileChannel channel=input.getChannel();
14.3信道调用tryLock()或lock()方法获得一个FileLock(文件锁)对象,这一过程也称作对文件加锁。
教材学习中的问题和解决过程
输入输出流得参照物搞不清楚
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
目标 | 5000行 | 20篇 | 400小时 | 会用java语言独立设计程序 |
第一周 | 13/13 | 1/1 | 5/5 | 学会使用jdk以及对java源程序语句的基本注意事项有所了解 |
第二周 | 140/143 | 1/2 | 10/15 | 学会java基本数据类型与数组和c语言/c++在表达和用法上的相同/不同之处 |
第三周 | 276/419 | 1/3 | 20/35 | java中运算符,表达式和语句的表现形式,类的声明,定义方法 |
第四周 | 600/1019 | 1/4 | 30/45 | 类和对象 |
第五周 | 150/1169 |
1/5 | 10/55 | 继承的作用,子类和父类的继承性,子类继承父类后方法的访问权限以及各种操作 |
第六周 | 100/1269 | 1/6 | 8/63 | 接口定义、使用方法和作用 |
第七周 | 100/1369 | 1/7 | 9/72 | 内部类(独有)包含匿名类和异常类(检测)的使用方法和作用 |
第八周 | 150/1869 | 1/8 | 10/82 | java常用实用类和方法 |
第九周 | 100/1969 | 1/9 | 20/102 | 组件、容器、窗口、(如何处理事件:事件源,监视器、接口) |
第十周 | 80/2049 | 1/10 | 10/112 | 输入输出流和各种流的作用、构造方法 |
参考文献
《java2实用教程(第5版)》