Java中的File类和IO类

本文介绍了Java中的File类,用于文件操作,包括构造文件对象、文件的创建、删除、读取等。同时详细讲解了IO流的概念,如字节输入输出流InputStream和OutputStream,字符输入输出流Reader和Writer,以及如何进行文件的读写。此外,还提到了序列化流在对象存储方面的应用。
摘要由CSDN通过智能技术生成

File类

该类是文件类,构造方法可以构造文件对象,用来对文件进行各种操作

构造方法

//新建一个文件对象,,通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例 
File file = new File("D:\\book\\经典文件夹");
/**从父抽象路径名和子路径名字符串创建新的 File实例*/
File file1 = new File(file,"传记")

File类的功能方法

//判断文件是否存在,返回值是boolean类型
boolean b = file.exists();
//删除文件
file.delete();
//创建文件
file.createNewFile();
//创建文件夹
file.mkdir();
//获取文件名
file.getName();
//获取文件的父目录
file.getParent();
//判断文件是不是目录,是不是文件
file.isDectory();
file.isFile();
//获取文件长度
file.length();

IO流

IO流是程序和文件之间进行数据传输的技术,有字节输入输出流和字符输入输出流

向文件写入,out,writer,,从文件中读取,in,reader

字节输入流 InputStream

该流主要是从文件中读取内容到程序中

//字节输入流,读取文件内容
//构建一个输入流对象
InputStream inputStream = new FileInputStream("D:\\book\\帮助说明.txt");
//读取文件的内容,一个字节一个字节的读,如果返回值是-1就说明读到了文件末尾
int i = inputStream.read();
while (i != -1) {
	System.out.print((char) i);
	 i = inputStream.read();
}
byte[] bytes = new byte[1024];
//读取内容到字节s
int i = in.read(bytes);
while (i != -1) {
	for (int j = 0; j < i; j++) {
	System.out.print((char) bytes[j]);
	}
	i=in.read(bytes);
}
//关闭流
inputStream.close();

字节输出流OutputStream

//用FileOutputStream抽象类来实现流的构建,文件不存在会自动创建这个文件
OutputStream out = new FileOutputStream("D:/test.txt", true);
//向文件写入一个字符
out.write('1');
//向文件里写入数据一次写入多个字符
//写入的时候会把byte数组里面的数字转换成对应的字符写入到文件里面
byte[] bytes = {90,97,101,105};
String str = "216645198";
byte[] bytes1 = str.getBytes();
//out.write(bytes);
out.write(bytes1);
out.close();

字符输入流Reader

//创建字节输入流对象 从文件中以一个一个字符的形式冲文件中读取数据
Reader reader = new FileReader(""D:/test.txt");
//从文件里读取一个字符
reader.read();
//读取一个字符串的内容
char[] chars = new char[10];
reader.read(chars);
//返回值num,只有读到最后一个时num值为-1                               
int num = fileReader1.read(chars);
while (num!=-1){
    for (int i = 0; i < num; i++) {
         System.out.print(chars[i]);
     }
//更新num的值
num = fileReader1.read(chars);
}
//关闭流
reader.close();                               

字符输出流Writer

 //构造一个write对象,向文本里写入字符内容
 Writer writer = new FileWriter("D:/test2.txt",true);
//向文件里写入内容,v以是字符串,可以是一个字符,也可以是字符数组
//写入字符串内容
        writer.write("你好我好大家好,nini");
        //写入字节内容
        writer.write('A');
        //写入,字符数组
        char [] chars = {'a','b','c'};
        writer.write(chars);
        writer.close();

序列化流

该流是向文件里读取或者写入对象的,把对象序列化,用对象输入输出流读取和输出

//怎么把对象序列化
//对象的类名继承  Serializable 接口
public class Book implements Serializable {
    private String name;
    private  int  id;
    ......;
    ......;
    ......;
}
  //一个字节序列可以表示一个对象,该字节序列包含对象的信息,可以把该字节序列写出到文件,相当于文件中持久保存了一个对象信息

        //创建输出流对象
        FileOutputStream out = new FileOutputStream("D:/book/book.txt",true);
        //创建book对象
        Book book = new Book("水浒传",1);
        //使用对象输出流进行对象的整体输出(序列化输出流)
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(out);

        objectOutputStream.writeObject(book);
        objectOutputStream.close();
  //创建字节输入流对象
        FileInputStream inputStream = new FileInputStream("D:/book/book.txt");
        //转换成对象输入流(反序列化输入流)
        ObjectInputStream stream = new ObjectInputStream(inputStream);

        //读取内容
        Object object = stream.readObject();
        Book book = (Book) object;
        System.out.println(book.getName()+book.getId());
        stream.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值