1. File类
1.1 File类的介绍
File类是属于java.io.File包下的,File类的一个对象,代表了一个文件或者一个文件目录(俗称文件夹)
1.2 File类的实例创建
在介绍File类的实例创建前,得需要先讲一下相对路径与绝对路径
相对路径:相较于某个路径下指明的路径,即是相对路径
绝对路径:绝对路径即包含了盘符(d:\)在内的文件或文件目录的路径
我们File类在创建时,常用的的构造方法有以下三种:
第一种是直接输入对应的字符串来表示文件的位置
@Test
public void test1(){
//构造器一
File file1=new File("hello.txt"); //相对于当前module
File file2=new File("D:\\Git\\java\\JavaSenior\\day_05\\he.txt"); //绝对路径
System.out.println(file1);
System.out.println(file2);
}
第二种是使用字符串来表示文件目录
//构造器二
File file3=new File("D:\\Git\\java","JavaSenior");//文件目录
System.out.println(file3);
第三种是在某一文件目录下的某一文件
//构造器三
File file4=new File(file3,"hi.txt"); //相当于在JavaSenior下面的一个文件
System.out.println(file4);
1.3 File类的常用方法
/*
适用于文件目录:
public String[] list():获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles():获取指定目录下的所有文件或者文件目录的File数组
*/
@Test
public void test2(){
File file1=new File("hello.txt");
File file2=new File("D:\\io\\hi.txt");
System.out.println(file1.getAbsolutePath());//获取绝对路径
System.out.println(file1.getPath()); //获取路径
System.out.println(file1.getName()); //获取名字
System.out.println(file1.getParent()); //获取上层文件目录,若无,返回null
System.out.println(file1.length()); //获取文件长度(字节数),不能获取目录的长度
System.out.println(file1.lastModified()); //获取最后一次的修改时间,返回值为毫秒数
}
public boolean isDirectory():判断是否是文件目录
public boolean isFile():判断是否是文件
public boolean exists():判断是否存在
public boolean canRead():判断是否可读
public boolean canWrite():判断是否可写
public boolean isHidden():判断是否隐藏
创建硬盘中对应的文件或文件目录:
public boolean creatNewFile():创建文件。若文件存在,则不创建,返回false
public boolean mkdir():创建文件目录.如果目录存在,则不创建
public boolean mkdirs():创建文件目录,如果上层文件目录不存在,一并创建
删除磁盘中的文件或文件目录
public boolean delete():删除文件或文件夹
注:Java中的删除不走回收站
2 InputStream和OutStream的使用
2.1 InputStream和OutStream的介绍
首先,在java中,按照数据单位的不同,可以分为字节流以及字符流,若是按照流向的不同,可以分为输入流和输出流,其中InputStream就是属于字节输入流,而OutStream就属于字节输出流
2.2 InputStream和OutStream的使用
首先InputStream是一个抽象基类,我们常常使用InputStream的实现类FileInpustream类来进行实例化,OutStream我们也常常使用FileOutputStream进行实例化,其基本使用步骤可以分为
(以下以InputStream为例)
1.造文件
File file = new File("hello.txt");
2.造流
FileInputStream fs=new FileInputStream(file);
3.读数据
byte[] buffer = new byte[5];
int len; //记录每次读取的字节个数
while ((len = fs.read(buffer)) != -1)
{
String str=new String(buffer,0,len);
System.out.print(str);
}
注:read操作一次会读取文件中的一个字节,但读取到空的时候会返回-1
4.关闭资源
if(fs!=null) {
fs.close();
}
为了保证流资源一定能够被关闭,我们常常使用try-catch-finally语句来进行流的操作
同时要记得处理文件操作时出现的异常,整体代码如下:
public void test() {
FileInputStream fs=null;
try {
//1.造文件
File file = new File("hello.txt");
//2.造流
fs = new FileInputStream(file);
//3.读数据
byte[] buffer = new byte[5];
int len; //记录每次读取的字节个数
while ((len = fs.read(buffer)) != -1)
{
String str=new String(buffer,0,len);
System.out.print(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//4.关闭资源
try {
if(fs!=null) {
fs.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}