Java文件与IO(一)之字节流

时间:2022-06-14 21:35:47

File类

1, 基本概念
File 类: 位于java.io包下, 表示文件和目录路径名的抽象表示形式

File类可以实现文件的创建,删除,重命名,得到路径和创建时间等等, 是唯一与文件本身有关的操作类.

2, File类的主要操作方法
Java文件与IO(一)之字节流
Java文件与IO(一)之字节流

字节流

1, IO流概述
IO流: 输入输出流(input/output)

流是一组有顺序的,有起点和终点的字节集合, 是对数据传输的总称或抽象. 即数据在两设备间的传输称为流 流的本质是数据传输, 根据数据传输特性将流抽象为各种类, 方便更直观的进行数据操作

Java文件与IO(一)之字节流
IO流的分类:
根据处理数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流
2, 字节输出流
OutputStream类定义
public abstract class OutputStream extends Object implements Closeable, Flushable 此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到InputStream类某个接收器 要向文件中输出, 使用FileOutputStream类

3, 字节输入流
InputStream定义:
ItSttdObjtiltClbl pu blic abstract class InputStreamextends Object implements Closeable
此抽象类是表示字节输入流的所有类的超类
FileInputStream从文件系统中的某个文件中获得输入字节

以上全是干货, 接下来我们通过代码来帮助理解

字节的流的读取和写入都有一般的格式, 代码如下

字节流的读取

/**
* 字节输入流,从文件向程序输入数据 用字节流读取文本文件可能会引起乱码!
*/

public static void read() {
File file = new File("test.txt");
InputStream in = null;
try {
in = new FileInputStream(file);
StringBuffer sb = new StringBuffer();
int len = -1;//每次真实读取的长度
byte[] b = new byte[1024*1024];
while( (len = in.read(b)) != -1 ){
sb.append(new String(b, 0, len));
}
System.out.println(sb.toString());

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//在用完流之后务必记得关闭流, 一般在finally中做关闭流的操作
//因为不管是不是出现异常我们的流都需要关闭
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

字节流的写入

    /**
* 字节输出流,从程序向文件输出数据
*/

public static void write() {
File file = new File("test.txt");
OutputStream out = null;
// 针对文件创建一个输出流
try {
// 构造方法加true表示追加
out = new FileOutputStream(file, true);
String info = "对, 这是你的博客";
out.write(info.getBytes());// 直接写入到文件中没有缓存

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 关闭
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 释放占用的资源
}
}

测试类

public static void main(String[] args) {
// TODO Auto-generated method stub
write();
read();
}

运行结果
Java文件与IO(一)之字节流

以上纯属个人见解, 如有不足之处希望有高人指出, 定感激不尽, 如有喜欢交流学习经验请给我留言谢谢.

原创文章, 转载请注明出处