教材学习内容总结
1.
java.io(I/O流库)包提供大量的流类,所有输入流都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类,而所有输出流都是抽象类OutputStream(字节输出流)或抽象类Writer(字节输出流)的子类。
2.
File类的对象主要用来获取文件本身的一些信息
File(String filename);
File(String directoryPath,String filename);
File(File f, String filename);
3.
public String getName() 获取文件的名字。
public boolean canRead() 判断文件是否是可读的。
public boolean canWrite() 判断文件是否可被写入。
public boolean exits() 判断文件是否存在。
public long length() 获取文件的长度(单位是字节)。
public String getAbsolutePath() 获取文件的绝对路径。
public String getParent() 获取文件的父目录。
public boolean isFile() 判断文件是否是一个普通文件,而不是目录。
public boolean isDirectroy() 判断文件是否是一个目录。
public boolean isHidden() 判断文件是否是隐藏文件。
public long lastModified() 获取文件最后修改的时间。
4.
public String[] list() 用字符串形式返回目录下的全部文件。
public File [] listFiles() 用File对象形式返回目录下的全部文件。
public String[] list(FilenameFilter obj) 用字符串形式返回目录下的指定类型的所有文件。
public File [] listFiles(FilenameFilter obj) 用File对象形式返回目录下的指定类型所有文件。
上述两方法的参数FilenameFilter是一个接口,该接口有一个方法:
public boolean accept(File dir,String name);
5.
使用输入流通常包括4个基本步骤:
(1)设定输入流的源
(2)创建指向源的输入流
(3)让输入流读取源中的数据
(4)关闭输入流。
6.
使用FileOutputStream类的下列具有刷新功能的构造方法创建指向文件的输出流。
FileOutputStream(String name);
FileOutputStream(File file);
其中:参数name和file指定的文件称为输出流的目的地
void write(int n) 向目的地写入单个字节。
void write(byte b[]) 向目的地写入一个字节数组。
void write(byte b[],int off,int len) 从字节数组中偏移量off处取len个字节写到目的地。
7.
Reader类提供的read方法以字符为单位顺序地读取源中的数据。
int read():
int read(char b[]):
int read(char b[], int off, int len):
void close():
long skip(long numBytes):
Writer流以字符为单位顺序地写文件,每次调用write方法就顺序地向目的地写入内容。 Writer类有如下常用的方法。
void write(int n): 向输出流写入一个字符。
void write(byte b[]): 向输出流写入一个字符数组。
void write(byte b[],int off,int length): 从给定字符数组中起始于偏移量off处取len个字符写到输出流。
void close(): 关闭输出流。
8.
BufferedReader和BufferedWriter类创建的对象称作缓冲输入、输出流。二者的源和目的地必须是字符输入流和字符输出流。
构造方法:
BufferedReader(Reader in);
BufferedWriter (Writer out);
BufferedReader和BufferedWriter类读写文件的方法:
readLine() 读取文本行
write(String s,int off,int len) 把字符串s写到文件中
newLine(); 向文件写入一个回行符
9.
使用RandomAccessFile类来创建一个随机访问文件流。RandomAccessFile类创建的流的指向既可以作为源也可以作为目的地。
构造方法:
RandomAccessFile(String name,String mode) ;
RandomAccessFile(File file,String mode) ;
相关方法:
seek(long a) 定位RandomAccessFile流的读写位置
getFilePointer() 获取流的当前读写位置
10.
字节数组输入流ByteArrayInputStream和字节数组输出流ByteArrayOutputStream分别使用字节数组作为流的源和目标。
ByteArrayInputStream构造方法及常用方法
ByteArrayInputStream(byte[] buf);
ByteArrayInputStream(byte[] buf,int offset,int length);
public int read();顺序地从源中读出一个字节
public int read(byte[] b,int off,int len);顺序地从源中读出参数len指定的字节数
ByteArrayOutputStream流构造方法及常用方法
ByteArrayOutputStream();
ByteArrayOutputStream(int size);
public void write(int b); 顺序地向缓冲区写入一个字节
public void write(byte[] b,int off,int len); 将参数b中指定的len个字节顺序地写入缓冲区
public byte[] toByteArray(); 返回输出流写入到缓冲区的全部字节
11.
DataInputStream和DataOutputStream类创建的对象称为数据输入流和数据输出流。
构造方法:
DataInputStream(InputStream in)创建的数据输入流指向一个由参数in指定的底层输入流
DataOutputStream(OutnputStream out)创建的数据输出流指向一个由参数out指定的底层输出流
12.
ObjectInputStream和ObjectOutputStream类创建的对象称为对象输入流和对象输出流。
它的构造方法是:
ObjectInputStream(InputStream in)
ObjectOutputStream(OutputStream out)
相关方法:
writeObject(Object obj) 将一个对象obj写入到一个文件
readObject() 读取一个对象到程序中
13.
使用默认分隔标记解析文件:
创建Scanner对象,并指向要解析的文件
使用正则表达式作为分隔标记解析文件:
创建Scanner对象,指向要解析的文件,并使用useDelimiter方法指定正则表达式作为分隔标记
14.
构造方法JFileChooser()创建初始不可见的有模式的文件对话框。然后文件对话框调用下述2个方法:
showSaveDialog(Component a);
showOpenDialog(Component a);
都可以使得对话框可见,只是呈现的外观有所不同,showSaveDialog方法提供保存文件的界面,showOpenDialog方法提供打开文件的界面。上述两个方法中的参数a指定对话框可见时的位置,当a是null时,文件对话框出现在屏幕的中央;如果组件a不空,文件对话框在组件a的正前面居中显示。
15.
如果读取文件时希望看见文件的读取进度可以使用javax.swing包提供的输入流类:
ProgressMonitorInputStream。
它的构造方法是:
ProgressMonitorInputStream(Conmponent c,String s,InputStream);
16.
FileLock、FileChannel类处理Java提供的文件锁功能。它们分别在java.nio和java.nio.channels包中。
输入、输出流读写文件时可以使用文件锁。
RondomAccessFile创建的流在读写文件时使用文件锁的步骤如下:
先使用RondomAccessFile流建立指向文件的流对象,该对象的读写属性必须是rw
input流调用方法getChannel()获得一个连接到地层文件的FileChannel对象(信道)
信道调用tryLock()或lock()方法获得一个FileLock(文件锁)对象,这一过程也称作对文件加锁.
参考资料
《java 2实用教程(第5版)》
本文详细介绍了Java中I/O流的概念与使用,包括字节流与字符流的分类,File类的功能与方法,以及各种流如FileInputStream、FileOutputStream、BufferedReader等的创建与操作方式。同时,探讨了如何利用RandomAccessFile实现随机访问文件,以及如何通过Scanner类解析文件。

被折叠的 条评论
为什么被折叠?



