File 类和文件流

本文深入探讨Java中IO的基本概念,包括File类的使用、文件与目录的创建、读写操作,以及不同类型的流如文件流、缓冲流、序列化流等的介绍。同时,文章提供了详细的代码示例,帮助读者理解如何在Java中有效处理文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所在包:Java.io.File

  1. File与流无关,不能通过file完成文件的读写
  2. 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

 

一个一个读取文件的缺点:

  1. 效率低
  2. 频繁的访问,对磁盘有伤害

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();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值