众所周知java语言提供给程序员非常多的包供编程时使用,方便又快捷。
I/O流也如此,在Java中这些类被放在java.io包里面,所以我们想要开始使用I/O就先把java.io填进去。
一. I/O
(1)输入流
首先介绍输入流,介绍输入流就要先了解InputStream类,它是字节输入流的抽象类,是所有字节输入流的父类。比如它包括AudioInputStream,ByteArrayInputStream,StringBufferInputStream等等,其中这类方法遇到错误的时候都会引发IOException异常。
该类中,有以下一些方法:
read():从输入流中读取数据的下一个字节,并且返回0-255范围内的int字节值。如果到达了流末尾而没有可用的字节,则返回-1。
read(byte[]b):从输入流中读入一定长度的字节,并以整数的形式返回字节数。
mark(int readlimit):在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数。
reset():将输入指针返回到当前所做的标记处。
close():关闭此输入流并且释放与该流关联的所有系统资源。
由于Java中的字符是Unicode编码,双字节,InputStream是用来处理字节的,并不适合处理字符串。所以Java为了字符输入提供了单独的类也就是Reader。相应的Reader类是字符输入流的抽象类,所有字符输入流的实现都是它的子类。Reader类与InputStream类中的方法类似,在此不进行赘述,感兴趣的可以去JDK文档自行查询。
(2)输出流
想对比与InputStream,输出流当然是OutputStream。
OutputStream类是字节输出流的抽象类,同样OutputStream类中也包含了很多方法,其中所有方法的返回值均为void,均返回void。在遇到错误的时候也会引发IOException异常。
下面简要介绍几个子类:
write(int b)(//对应于read,方便好记):将指定的字节写入这个输出流。
write(byte[] b):将b个字节从指定的byte数组写入此输出流。
write(byte[] b,int off,int len)方法:将指定byte数组中从偏移量off开始的len个字节写入此输出流。
flush():彻底完成输出并且清空缓存区。
close():关闭输出流。
二.File操作
(1)文件的创建与删除
Java中提供了File类创建文件对象,通常情况下使用以下三种。
- File(String name)
其中name指的是文件的路径名字,例如,我们想要创建一个新的File对象,我们可以
File filename = new File("c:/java1.txt");
- File(String parent,String child)
该方法根据父路径来创建一个新的File对象
File file = new File("C:","java1.txt");
- File(File f,String child)
与上面类似,只不过前面的paret变成了File类型,所以我们需要换一种构造方式。
File parent = new File("c:");
File file = new File(parent,"java1.txt");
当然每次进行new File 不妨考虑到会不会有该文件或者是直接创建问题。那么我们可以看下面代码如何解决。
public class Test{
public static void main(String[] rags){
File file = new File("java1.txt");
if(file.exists()){
file.delete();
System.out.println("文件删除");
}
else{
try{
file.createNewfile();
System.out.println("文件创建好了");
}catch(Exception e){
e.printStackTrace();
}
}
}
}
可以看到这里面有关于文件异常的操作,try catch,另外我们还调用了delete和exists,分别是当我们创建了文件java1.txt时候,判断如果该文件存在,那我们进行delete操作,并且输出提示,else否则如果文件不存在那么我们进行文件创建,createNewfile,并且输出提示。
下面在最后简单进行一下File包含常用的方法的小汇总:
方法 | 返回值 | 说明 |
---|---|---|
getName() | String | 获取文件的名称 |
canRead() | boolean | 判断文件是否可读 |
canWrite() | boolean | 判断文件是否可以被写入 |
exits() | boolean | 判断文件是否存在 |
length() | long | 以字节位单位获取文件长度 |
getAbsolutePath() | String | 获取文件的绝对路径 |
getParent() | String | 获取文件的父亲路径 |
isFile() | boolean | 判断文件是否存在 |
isDirectory() | boolean | 判断文件是否为一个目录 |
isHidden() | boolean | 判断文件是否为隐藏文件 |
lastModified() | long | 获取文件最后修改时间 |
好了,本次介绍就到此结束了,下次再见,拜拜!