1、 流概述
-
流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种。
-
I/O提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地。
-
虽然I/O流通常与磁盘文件存取有关,但程序的源和目的地也可以是键盘、鼠标、内存或显示器窗口等。
-
java由数据流处理输入/输出模式,程序从指向源的输入流中读取源中的数据。源可以是文件、网络、压缩包或其他数据。
-
输出流的指向是数据要到达的目的地,程序通过向输出流中写入数据把信息传递到目的地。输出流的目标可以是文件、网络、压缩包、控制台和其他数据输出目标。
2、 输入/输出流
java语言定义了许多类专门负责各种方式的输入/输出,这些类都放在java.io包中。其中,所有输入流都是抽象类InputStream或抽象类Reader的子类;而所有输出流都是抽象类OutputStream或抽象类Writer的子类。
2.1 输入流
InputStream类是字节输入流的抽象类,是所有字节输入流的父类。该类中所有方法遇到错误都会引发IOException。下面是对该类中的一些方法的简要说明。
- read()方法:从输入流中读取数据的下一个字节。返回0~225范围内的int字节值。如果因为已经到达流末尾而没有可用的字节,则返回 -1。
- read(byte[] b)方法:从输入流中读取一定长度的字节,并以整数的形式返回字节数。
- mark(int readlimit)方法:在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。
- reset()方法:将输入指针返回当前所做的标记处。
- skip(long n)方法:跳过输入流上的n个字节,并返回实际跳过的字节数。
- markSupported()方法:如果当前流支持mark()/reset()操作就返回true。
- close()方法:关闭此输入流并释放与该流关联的所有系统资源。
Reader类是字符输入流的抽象类,所有字符输入流的实现都是它的子类。
2.2 输出流
OutputStream类是字节输出流的抽象类,此抽象类是表示输出字节流的所有类的超类。OutputStream类中的所有方法均返回void,在遇到错误时会引发IOException异常。下面对OutputStream类中的方法做简单的介绍。
- write(int b)方法:将制定的字节写入此输出流。
- write(byte[] b)方法:将指定的byte数组b写入此输出流。
- write(byte[] b,int off,int len)方法:将指定byte数组中从偏移量off开始的len个字节写入此输出流。
- flush()方法:彻底完成输出并清空缓存区。
- close()方法:关闭输出流。
Writer类是字符输出流的抽象类,所有字符输出类的实现都是它的子类。
3、 File类
File类是java.io包中唯一代表磁盘文件本身的对象。File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建、删除、重命名文件等操作。File类的对象主要用来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件读写权限等。
3.1 文件的创建与删除
可以使用File类创建一个文件对象。通常使用以下3种构造方法来创建文件对象。
(1)File(String pathname)
该构造方法通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例。语法如下:
new File(String pathname)
其中,pathname指路径名称(包含文件名)。例如:
File file=new File("d:/1.txt");
(2) File(String pathname)
该构造方法根据定义的父路径和子路径字符创(包含文件名)创建一个新的File实例。语法如下:
new File(String parent,String child)
- parent:父路径字符串,例如D:/ 或D:/doc
- child:子路径字符串,例如letter.txt
(3) File(File f,String child)
该构造方法根据parent抽象路径名和child路径名字符串创建一个新File实例。语法如下:
new File(File f,String child)
- f:父路径对象,例如D:/doc/
- child:子路径字符串,例如letter.txt
当使用File类创建一个文件对象后,例如:
File file=new File("word.txt");
如果当前目录中不存在名称为word的文件,File类对象可以通过调用createNewFile() 方法创建一个名称为word.txt的文件;如果存在word.txt文件,可以通过文件对象的delete()方法将其删除。
public class FileTest {
public static void main(String[] args){
File file=new File("word.txt");
if(file.exists()){
file.delete();
System.out.println("文件已删除");
}else{
try{
file.createNewFile();
System.out.println("文件已创建");
}catch (Exception e){
e.printStackTrace();
}
}
}
}
3.2获取文件信息
File类提供了很多方法以获取文件本身信息,其中常用的方法如下所示
方法 | 返回值 | 说明 |
---|---|---|
getName() | String | 获取文件的名称 |
canRead() | boolean | 判断文件是否为可读的 |
canWrite() | boolean | 判断文件是否可被写入 |
exits() | boolean | 判断文件是否存在 |
length() | long | 获取文件的长度(以字节为单位) |
getAbsolutePath() | String | 获取文件的绝对路径 |
getParent() | String | 获取文件的父路径 |
isFile() | boolean | 判断是否是文件 |
isDirectory() | boolean | 判断是否为一个目录 |
isHidden() | boolean | 判断文件是否为一个隐藏文件 |
lastModified() | long | 获取文件最后修改时间 |
public class FileTest2 {
public static void main(String[] args){
File file=new File("word.txt");
if(file.exists()){
String name=file.getName();
Long length=file.length();
boolean hidden=file.isHidden();
System.out.println("文件名称:"+name);
System.out.println(