10-IO流

File文件类

构造方法

构造方法作用
new File(String path)生成文件路径
new File(String fuPath,String ziPath)连接文件路径
new File(File fuPath,String ziPath);连接文件路径

常用方法

方法名作用返回值
createNewFile()创建文件boolean
File file = new File(file, "名称");
file.createNewFile();
方法名作用返回值
mkdir()创建文件夹boolean
mkdirs()创建多级文件夹boolean
File file = new File(file, "名称");
file.mkdir();
File file = new File(file, "名称\\名称\\...");
file.mkdirs();
方法名作用返回值
delete()删除文件(夹)boolean
File file = new File(file, "名称");
file.delete();
方法名作用返回值
getName()获取文件(夹)名称String
getPath()获取完整路径String
toString()获取完整路径String
File file = new File(file, "路径//名称");
file.getName();//名称
file.getPath();//路径//名称
file.toString();//路径//名称
方法名作用返回值
length()获取文件字节数long
File file = new File(file, "名称.类型");
file.length();
方法名作用返回值
list()获取路径下所有文件(夹)名称String[]
listFiles()获取路径下所有文件(夹)对象File[]
File file = new File("路径");
//文件名数组
String[] filename = file.list();
//文件路径数组
File[] files = file.listFiles();
方法名作用返回值
isFile()路径是否指向文件对象boolean
isDirectory()路径是否指向文件夹对象boolean
exits()路径是否存在boolean
File file = new File("路径\\文件夹");
file.isFile();//false
file.isDirectory();//true
file.exists();//true

传输流

-读入流写出流
字节流InputStreamOutputStream
字符流ReaderWriter
方法read()write()

字节流

字节读入流

new FileInputStream(File 读入地址) -- 文件必须存在,否则异常

常用方法

方法名作用返回值
read()读一个字节 返回其ASCII值int
read(byte[])数组长度决定每次读入字节数int
//创建读入文件的对象 
File file = new File("路径\\文件");
//创建字节读入流对象
FileInputStream fis = new FileInputStream(file);
//可选择缓冲区(字节数组)读入
//定义合适长度的数组
byte[] bs = new byte[4];
//记录每次实际读入的字节数
int l = 0;
while((l = fis.read(bs))!=-1){
    //String类构造方法将读入字节连接输出
    syso(new String(bs,0,l));
}
//一次性读完
byte[] bs = new byte[(int)file.length];
//记录每次实际读入的字节数
fis.read(bs)
//String类构造方法将读入字节连接输出
syso(new String(bs);
}
//以上代码针对单字节文本 没有问题 但是包含有汉字等多字节字符 可能会出现乱码

字节写出流

new FileOutputStream(File 写出地址) -- 文件可不存在,自动创建

new FileOutputStream(File,boolean)

boolean:false(默认值)

false -- 覆盖原数据

true -- 原数据后追加

常用方法

方法作用
write(int)将字符写出:字符串(部分)、数组
flush()刷新缓冲区
close()关闭对象
//创建写出目标地址,最终文件可不存在 自动创建
File file = new File("路径\\文件");
//创建字节写出流对象
//默认第二个参数为false,将覆盖数据
FileOutputStream fos = new FileOutputStream(file);
fos.write(97);//a
fos.write('a');//a
fos.write("中国".getBytes());//中国
fos.write("中国你好".getBytes(),4,4);//你好
fos.flush();//刷新缓冲区 保证全部写出
fos.close();//刷新缓冲区 同时关闭写出流对象    
 

字符流

字符读入流

new FileReader(File 读入地址) -- 文件必须存在,否则异常

常用方法

方法名作用返回值
read()读一个字节 返回其ASCII值int
read(char[])数组长度决定每次读入字节数int
//准备读入的文件对象
File file = new File("路径\\文件");
//创建字符读入流对象
FileReader fr = new FileReader(file);
char[] cs = new char[4];
int l = 0;
while((l = fr.read(cs))!=-1) {  //每次最多读4个字符
    System.out.print(new String(cs,0,l));
}
//一次性读完
char[] cs = new char[(int)file.length];
//记录每次实际读入的字节数
fis.read(cs)
//String类构造方法将读入字节连接输出
syso(new String(cs);
}

字符写出流

new FileWriter(File 写出地址) -- 文件可不存在,自动创建

new FileWriter(File,boolean)

boolean:false(默认值)

false -- 覆盖原数据

true -- 原数据后追加

常用方法

方法名作用
write()将字符写出:字符串(部分)、数组
flush()刷新缓冲区
close()关闭对象

使用字符写出流写出字符后,必须刷新或者关闭,否则写出失败

缓冲流

字节读入缓冲流

new BufferedInputStream(FileInputStream)

字节写出缓冲流

new BufferedOutputStream(FileOutputStream)

字符读入缓冲流

new BufferedReader(FileReader) -- 额外方法:readLine()→读入整行

BufferedReader br = new BufferedReader(new FileReader(new File("路径\\文件")));
//使用缓冲字符读入流提供的整行读入方法
String str = null;
while((str = br.readLine())!=null) {
    System.out.println(str);
}
br.close();

字符写出缓冲流

new BufferedWriter(FileWriter) -- -- 额外方法:newLine()→写出换行

对象流

将对象以字节码形式(加密)读写数据

被序列化的对象所属的类 必须实现可序列化接口 -- Serializable

为序列化类添加UID (增删属性后)保证数据反序列化成功

//序列号对象 -- 必须实现可序列化接口(Serializable)
public class User implements Serializable {
    ...
    //为序列化类添加UID 保证数据反序列化成功
    private static final long serialVersionUID = 1L;
}

序列化(写出)

标准

new ObjectOutputStream(FileOutputStream)

void writeObject(写出对象)

//写出文件地址
File file = new File("路径\\文件");
//普通字节写出流对象
FileOutputStream fos = new FileOutputStream(file);
//序列化流对象
ObjectOutputStream oos = new ObjectOutputStream(fos);
//写出对象
User u = new User("张三",18);
oos.writeObject(u);
//刷新
oos.flush();
//关闭
oos.close();
fos.close();

反序列化(读入)

new ObjectInputStream(FileInputStream)

Object readObject()

ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("路径\\文件")));
//对象存储
User user = (User)ois.readObject();
System.out.println(user.name+" "+user.age);
ois.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值