所在包:Java.io.File
- File与流无关,不能通过file完成文件的读写
- File表示的是文件和目录路径的抽象表现形式
File fiile = new File(“D:/java”);
输出一下file,发现是一个字符串路径
判断文件是否存在
File.exists()
File既可以是文件也可以是目录
判断file是文件还是目录
File.isFile(),file.isDirectory()
如果没有,创建一个
If(!file.exists()){
File.createNewFile()//创建一个新文件
File.mkdir()//创建一个目录
File.mkdirs()//创建多个目录
}
//获取文件名
File.getName();
//获取绝对路径
File.getAbsolutePath();
//遍历一个目录下的多个文件
Public static void method(File file){
If(file.isFile()){
Return ;
}
File[] files = file.listFiles();
Sysotem.out.println(f.getAbsolutePath());
//递归
Method(f);
}
For(File f : files){
System.out.println(f.getAbsolutePath());
Method(f);
}
java中流一共有16个
有些流成对出现
传输方式:输入流、输出流
表现形式:字节流(处理二进制对象、字节)、字符流(处理字符、字符串)
1.文件流(相当于水管流水)
FileInputStream()、FileOutputStream()--->输入、输出字节流
FileReader、FileWriter输入输出字符流
2.缓冲流(相当于水缸用来屯水,在内存里开辟空间 减少对硬盘的频繁读取)
BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
3.序列化流
ObjectInputStream、ObjectOutputStream
4.转换流(将字节流转换为字符流)
InputStreamReader、OutputStreamWriter
5.数据流
DataInputStream、DataOutputStream
6.打印流
PrintWriter、PrintStream
一个一个读取文件的缺点:
- 效率低
- 频繁的访问,对磁盘有伤害
Public static void main (String[] args) throws IOException{
//用文件流对文件进行操作,首先需要一个文件
File file = new File(“D:/a.java”);
//有文件流
FileInputStream fis = new FileInputStream(file);
//文件的输入输出是以什么为参照物的? 内存
Int i1 = fis.read();//---->返回的是字节
System.out.println(i1);//输出的是a的ASCII码----97
所以转换为字符
System.out.println((char)i1);
Int i2 = fis.read();
System.out.println((char)i2);
}
输出的是a的ASCII码----97
?的ASCII码是-1,所以可以将其作为判断条件
所以修改方法为循环读,通过-1判断
Public static void main (String[] args) throws IOException{
//用文件流对文件进行操作,首先需要一个文件
File file = new File(“D:/a.java”);
//有文件流
FileInputStream fis = new FileInputStream(file);
While(true){
Int tem = fis.read();
If(tem == -1){
Break;
}
System.out.println((char)tem);
Fis.close();
}
}
Public static void main (String[] args) throws IOException{
//用文件流对文件进行操作,首先需要一个文件
File file = new File(“D:/a.java”);
//有文件流
FileInputStream fis = new FileInputStream(file);
//文件的输入输出是以什么为参照物的? 内存
While(fis.read() != -1){
System.out.println(char(fis.read()));
}
Fis.close();
}
Public class FileInputStreamTest_2{
Public static void main(String[] args) throws IOException{
File file = new File(“D:/a.java”);
FileInputStream fis = new FileInputStream(file);
//每次读三个
Byte[] bytes = new byte[3];
Int i1 = fis.read(bytes);
System.out.println(i1);//3---字节数
System.out.println(new String(bytes));//abc
Int i2 = fis.read(bytes);
System.out.println(i2);//2---字节数
System.out.println(new String(bytes));//dec
Int i3 = fis.read(bytes);
System.out.println(i3);//-1---字节数,因为没有了,所以输出-1
//用循环
While(fis.read() != -1){
System.out.println(new String(bytes,0,fis.read()));
}
Fis.close();
}
}
Public class FileInputStreamTest_2{
Public static void main(String[] args) throws IOException{
File file = new File(“D:/a.java”);
FileInputStream fis = new FileInputStream(file);
//每次读三个
Byte[] bytes = new byte[3];
//用循环
While(fis.read(bytes ) != -1){
System.out.println(new String(bytes,0,fis.read()));
}
Fis.close();
}
}
结果:adc,de
Public class FileInputStreamTest_2{
Public static void main(String[] args) throws IOException{
//读自己
File file = new File(“这个文件的路径”);
FileInputStream fis = new FileInputStream(file);
Byte[] bytes = new Byte(1024);
Int temp;
While((temp = fis.read(bytes)) != -1){
System.out.println(new String(bytes,0,temp));
}
Fis.close();
}
}
//输出流
Public class FileOutputStreamTest_1{
Public static void main(String[] args) throws IOException{
String info = “你我”;
//首先有一个文件接收,将字符串中的内容写入文件中
File file = new File(“D:/b.java”);//没有文件接收会自动创建
FileOutputStream fos = new FileOutputStream(file);
Byte[] bytes = info.getBytes();//获取字节
Fos.write(bytes);
//刷新
Fos.flush();
//关闭
Fos.close();
}
}
复制字符 代码
public class CopyCharTest {
public static void main(String[] args) throws IOException{
//将d.java文件中的内容复制到b.java文件中
File file1 = new File("D:/b.java");
File file2 = new File("D:/d.java");
//读b.java数据
FileReader fr = new FileReader(file1);
//写数据
FileWriter fw = new FileWriter(file2);//覆盖
//FileWriter fw = new FileWriter(file2,true);//追加
char[] ch = new char[512];
int temp;
while ((temp = fr.read(ch)) != -1) {
//写到接收的文件中去
fw.write(ch,0,temp);
}
fr.close();
fw.close();
}
}