File类
Java对于文件的管理是通过java.io.File类实现的
Java中文件的管理,主要是针对文件或是目录路径名的管理
- 文件的属性信息
- 文件的检查
- 文件的创建和删除
- 不包括文件的访问
构造方法:
File 对象名 = new File(String path); //指定路径名来创建File对象
File 对象名 = new File(String parent,String child);//在父类parent路径下,创建child文件
File 对象名 = new File(File parent,String child);//在父类File对象parent路径下,创建child文件
常用方法:
- boolean creatNewFile() 在File的抽象路径指定的文件不存在是,创建文件
- boolean exists() 判断File对象指定的抽象路径的文件或目录是否存在
- boolean delete() 删除File对象所指向的文件或者目录
- boolean mkdir() 创建指定的目录,如果父目录不存在,返回false
- boolean mkdirs() 创建指定的目录,如果父目录不存在,则先创建父目录
- booean isFile() 判断当前的File对象是否是一个文件
- Sting getName() 返回文件名
- String[] list() 获取目录下的子文件和子目录的名称,返回字符串数组
- File[] listFile()获取目录下的子文件和子目录的File数组
数据流
数据流是用来表示连续不断的一串数据的集合。
数据流的分类
- 按流的方向分:输入流、输出流
- 按处理数据的单位分:字节流、字符流
- 按功能分:节点流、处理流
流的层次结构图如下:
继承规则:
- 输入字节流:全部继承自InputStream,都叫XXXInputStream
- 输出字节流:全部继承自OutputStream,都叫XXXOutputStream(printStream除外)
- 输入字符流:全部继承自Reader,都叫XXXReader
- 输出字符流:全部继承自Writer,都叫XXXWriter
输入字节流
常用方法:
- int read()每次读取一个字节的内容,以int的形式返回,若没有内容可读,返回-1
- int read(byte[] buff) 将读到的内容放在字节数组buff中,返回实际读到的字节数
- int read(byte[],int offset,int len)将读到的内容放到字节数组buff中,从数组的offset的位置开始往后放,len表示读取的长度
- close() 关闭流,释放资源
/**
* 字节输入流示例
*/
import java.io.*;
public class inputStreamDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
FileInputStream in = null;
try {
//创建对象
in = new FileInputStream("H:/javaIOTest/file1.txt" );
//从输入流中读取内容(每次只读一个字节)
/*int res = 0;
while((res = in.read()) != -1) {
System.out.print((char)res);
}
System.out.println();*/
//创建buffer数组
byte[] buf = new byte[30];
in.read(buf, 0, 30);
System.out.println(new String(buf));
} catch (Exception e) {
e.printStackTrace();
}finally {
//关闭流,释放资源
in.close();
}
}
}
输出字节流
常用方法:
- write(byte[] buff) 将buff中的字节内容输出到文件中
- write(byte[] buff,int offset,int len) 将buff中的字符内容宋offset开始的len个字节写入文件中
- flush()刷新输出流的缓冲区,将缓冲区的字符内容写到文件中
- close()关闭流,释放资源,在close()方法中也调用了flush()方法
/**
* 字节输出流示例
*/
import java.io.*;
public class OutputStreamDemo {
public static void main(String[] args) throws IOException {
FileOutputStream out = null;
try {
//构造方法第二个参数表示是否在原文件后面添加数据,不写或写false则覆盖源文件数据
out = new FileOutputStream("H:/javaIOTest/file.txt",true);
//write传入多个数据需要使用字节数组
out.write("aaabbb".getBytes());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//关闭流,释放资源
out.close();
}
}
}