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()
用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(文件锁)对象,这一过程也称作对文件加锁。