文件类、字节流和字符流

第一节 File类
java.io包中 (IO Input Output)
在java程序中,对磁盘文件进行描述的类。文件和目录路径名的抽象表示形式。

File类的方法:创建文件 creatNewFile()、mkdir()、mkdirs()
判断:isFile()、canRead()、canWrite()、canExecute()
获取:getName()、getAbsolutePath()、getCanonicalPath等;
重命名:renameTo()

什么是IO流(Input、Output)
在工作中,经常会操作磁盘上的资源,这个过程中实现了数据的输入和输出操作,磁盘上的文件和内存之间进行
交互,数据的交互需要有一个媒介或者管道,把这个媒介或者管道就称为IO流,也被称为输入输出流【I:Input O:Output】

输入:从外部存储设备到内存叫输入|读取。
输出: 从内存到外部存储设备叫输出|写入。
流的作用和原理
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质
是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
2.3 IO流的种类
2.3.1 按照流的流向分:输入流、输出流
输入流:表示将数据读取到java程序(内存)中使用的流。
输出流:表示从java程序(内存)向外传输使用的流。

2.3.2 按照数据单位分:字节流、字符流
字节流:一次性传输一个字节数据,将数据以字节的形式传输。
字符流:一次性传输一个字符(1、2或3个字节)数据,将数据以字符的形式传输。

2.3.3 按照功能分:节点流、处理流
节点流:可以从或向一个特定的地方(节点)读写字节数据。
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。
方法名 描述
void close() 关闭此输入流并释放与该流关联的所有系统资源。
int read() 从输入流中读取数据的下一个字节。
int read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组b中。
int read(byte[] b,int off, int len) 将输入流中最多len个数据字节读入 byte 数组。

2.4.2 文件输入流FileInputStream

输入字节流代码实现:
//创建输入流
FileInputStream fis = new FileInputStream(“D:\GP4\1.txt”);
//int r = fis.read();
//System.out.println((char)r);

//读取到缓存中
byte[] buf = new byte[10];
int len=-1;
//文件没有内容的时候返回-1
while ((len=fis.read(buf))!=-1)
for (int i = 0; i <len ; i++) {
System.out.print((char)buf[i]);
}
//关闭
fis.close();

输出字节流代码实现:
//创建输出流
FileOutputStream fos = new FileOutputStream(“D:\GP4\2.txt”,true);
//写入
String con = “helloworld\r\n”;
fos.write(con.getBytes());
System.out.println(“写入完毕”);
//关闭
fos.close();

2.6 字符输入流
Reader类
Reader:是所有字符输入流的父类,为一个抽象类,不能实例化对象,使用它的子类FileReader类

    //创建字符输入流
    FileReader fr = new FileReader("d:\\GP4\\1.txt");
    //读取一个字符

// int l = fr.read();
// System.out.println((char)l);
//读取多个字符
int l = -1;
char[] buf = new char[1024];
while ((l=fr.read(buf))!=-1){
for (int i = 0; i <l ; i++) {
System.out.print((buf[i]));
}
}

2.7 字符输出流
Writer类
Writer:是所有字符输出流的父类,为一个抽象类,不能实例化对象,使用它的子类FileWriter类
//创建流
FileWriter fw = new FileWriter(“d:\GP4\3.txt”,true);
for (int i = 0; i <10 ; i++) {
fw.write(“我爱亚萍\r\n”);
//刷新,立即写入
fw.flush();
}
fw.close();
System.out.println(“写入完毕”);

字节流拷贝:
//创建字节输入流
FileInputStream fis = new FileInputStream(“C:\Users\PC\Pictures\images\皮卡丘2.jpg”);
//创建字节输出流
FileOutputStream fos = new FileOutputStream(“C:\Users\PC\Pictures\images\皮卡丘_1.jpg”);
//缓冲区
byte[] buf = new byte[1024*4];
int len = -1;
while ((len = fis.read(buf))!=-1){
fos.write(buf, 0, len);
//立即刷新
fos.flush();
}
//关闭流
fis.close();
fos.close();
System.out.println(“拷贝完毕”);

字符流拷贝:
//1.创建流
FileReader fr = new FileReader(“d:\GP4\3.txt”);
FileWriter fw = new FileWriter(“d:\GP4\3_1.txt”);
char[] buf = new char[1024];
int len = -1;
//写入写出
while ((len = fr.read(buf)) != -1) {
fw.write(buf, 0, len);
fw.flush();
}
//3.关闭流
fr.close();
fw.close();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值