文件管理
1.Java中的对文件的管理,通过java.io包中的File类实现
2.Java中文件的管理,主要是针对文件或是目录路径名的管理
文件的属性信息
文件的检查
文件的删除等
不包括文件的访问
文件的构造方法
File 对象名 = new File(String path);//指定路径名来创建File对象。
File 对象名 = new File(String parent,String child) ;//在父类parent路径下,创建child文件。
File 对象名 = new File(File parent,String child) ;在父类对象parent路径下,创建child文件
常用方法
createNewFile() 在File的抽象路径指定的文件不存在时,创建文件
boolean exists() 判断File对象指向的抽象路径的文件或者目录是否存在
boolean delete() 删除File对象所指向的文件或者目录
boolean mkdir() 创建指定的目录 ,如果父目录不存在,会返回false
boolean mkdirs() 创建指定的目录,如果父目录不存在,会先创建父目录。
boolean isFile() 判断当前的File对象是否是一个文件,是文件返回true,否则返回false
getAbsolutePath() 获取文件的绝对路径
getName() 获取文件名
list() 获取目录下的子文件(及子目录)的名称,返回字符串数组
listFiles()获取目录下的子文件(及子目录)的File数组
例子
package day0822;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileCrateDemo {
public static void main(String[] args) throws IOException {
String path = "hello.txt";
String parent = "D:/test1";
String child = "test.txt";
File file = new File("D:/test2");
File file1 = new File(path);//指定路径名来创建对象
File file2 = new File(parent, child);//在父类parent路径下,创建child对象
File file3 = new File(file, child);//在父类对象parent路径下,创建child对象
file.mkdirs();//创建文件夹,mkdir可创建一个,mkdirs可创建多个
System.out.println(file3.createNewFile());//创建新文件,返回值为布尔值
System.out.println(file.delete());//文件夹为空时,才可以删除,返回值为布尔值
System.out.println(file3.getPath());//获取文件路径,返回值为String
System.out.println(file1.getAbsolutePath());//获取文件的绝对路径,返回值为String
// file3.delete();//文件夹为空时,才可以删除
// System.out.println(file.delete());//直接删除文件
}
}
数据流
概念:用来表示连续不断的一串数据的集合。
数据流的分类:
1.按流的方向:输入流以及输出流。
2.处理数据的单位不同:字节流、字符流。
3.按功能分:节点流、处理流
继承规则:
- 输入字节流
- 全部继承自InputStream,叫XxxInputStream
- 输出字节流
- 全部继承自OutputStream,叫XxxOutputStream
- 输入字符流
- 全部继承自Reader,叫XxxReader
- 输出字符流
- 全部继承自Writer,叫XxxWriter
输入字节流
- 常用的方法
- int read( ) 每次读取一个字节的内容,以int的形式返回,如果没有内容可以读了,返回-1;
- int read(byte[] buff) 将读到的内容放到数组buff中,返回实际读到的字节数。
- int read(byte[] buff,int offset,int len) 将读到的内容放在数组buff中,从数组的offset的位置开始往后放,len表示读取的长度。
- close() 关闭流,释放资源
输出字节流
- 常用的方法
- write(byte[] buffer) 将buffer中的字节内容输出到文件中。
- write(byte[] buffer,int setoff,int len) 将buffer中的字节内容从setoff开始的len个字节写入到文件中。
- flush() 刷新输出流的缓冲区,将缓冲区的字节内容写入到文件中。
- close() 关闭流,释放资源
节点流
- 从数据源(文件,内存等)直接读写数据的类,称为节点流
- FileInputStream、FileOutputStream、FileReader、FileWriter
例子
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/**
* 利用FileInputStream读取文件内容
* 1.字符流
* 2.字节流
* @author hydra
*
*/
public class FileInputStreamDemo {
public static void main(String[] args) throws IOException {
//创建FileInputStream对象
FileInputStream in = new FileInputStream("hello.txt");
int tmp = 0;//如果返回值不是1,表示内容没有读完,一直循环
while((tmp=in.read())!=-1) {
System.out.print((char)tmp);
}
//一次读取内容存入到数组buf中
byte[] buf = new byte[512];
in.read(buf);
System.out.println(new String(buf));
in.close();//关闭资源
}
}
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 向文件里写
* @author hydra
*
*/
public class FileOutputStreamDemo {
public static void main(String[] args) throws IOException {
//第二个参数表示是否在文件原有的内容之后追加。
FileOutputStream out = new FileOutputStream("hello.txt",true);
//将内容写入文件
out.write("aaabbbccc".getBytes());
//关闭资源
out.close();
}
}
public class FileReaderdemo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("hello.txt");
int tmp = 0;//如果返回值不是1,表示内容没有读完,一直循环
while((tmp=fr.read())!=-1) {
System.out.print((char)tmp);
}
FileWriter fw = new FileWriter("hello.txt",true);
fw.write("llll");
fw.close();
}
}
处理流
- 对于流进行了封装,用于提高读写效率,一般接收一个已经存在的流作为参数。
- BufferedInputStream、BufferedOutputStream
- 常用的方法:
- BufferedInputStream(InputStream in) 使用输入流对象构造一个缓冲输入流,默认带有8k字节的缓冲区
- BufferedInputStream(InputStream in,int len) 使用输入流对象构造一个缓冲区大小为len字节的缓冲输入流
- BufferedOutputStream(OutputStream out) 使用输出流out创建一个带有8k字节缓冲区的缓冲输出流
- BufferedOutputStream(OutputStream out,int len) 使用输出流out创建一个带有len字节缓冲区的缓冲输出流
- 其他的读写方法与之前的相同。
- BufferedReader / BufferedWriter
- readLine() 一次读文件的一行
- newLine() 输出换行符
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 缓冲输入流
* @author hydra
*
*/
public class BufferedInputStreamDemo {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("hello.txt");
//在FileInputStream中创建输入缓冲流
BufferedInputStream bin = new BufferedInputStream(in);
int tmp = 0;
// while((tmp=bin.read())!=-1) {
// System.out.println((char)tmp);
// }
byte[] barray = new byte[32];
if(bin.read(barray)>0) {
System.out.println(new String(barray));
}
//关闭输入流
bin.close();
FileOutputStream out = new FileOutputStream("hello.txt",true);
BufferedOutputStream bout = new BufferedOutputStream(out);
bout.write("hello,world".getBytes());
bout.flush();//将缓冲区的内容强制写入文件
bout.close();
}
}