输入和输出(I/O流)
变量
数组
对象
对象数组
集合
文件的操作
1. 了解输入和输出的概念
当你在利用程序将文件/RAM内存/键盘输入的东西 获取到的这个过程中,它会使用到你系统的InputStream(输入流)。
当你在利用程序将一些内容输出到文件/RAM内存/控制台等的时候,这个过程里面 使用到了系统的OutputStream(输出流)。
BIOS
2. 使用File类操作文件或目录
java.io.File类。
需求:获取某个文件的大小。
常用的API
- long length(); 获取文件的大小 单位:字节
- boolean exists(); 判断文件/目录是否存在
- boolean isFile(); 判断是否是文件
- boolean isDirectory(); 判断是否是目录
- String getPath(); 获取相对路径
- String getAbsolutePath(); 获取绝对路径
- boolean delete(); 删除空目录 、 文件
- boolean createNewFile(); 创建【文件】
- boolean mkdir(); 创建文件夹
- String getName(); 获取文件名,带有扩展名
- list等…
3. 理解流的概念和分类
流:(电流、水流、车流)乃至于我们计算机世界中的数据流。
它所代表的是一组有序的数据序列。 以先进先出的形式进行传递(流动)。
按照流的走向:(参照的是程序是在进行读取还是写入)
1. 输入流(读)
2. 输出流(写)
按照处理的数据单元:
-
字节流
它可以用来以字节为单位操作数据。一般用来作为数据传递使用。
可以操作的有 普通文本文件、图片、视频、音频等所有的。
-
字符流
文本 一般用来阅读一些内容。
可以操作能被Notepad++打开不乱码的内容。
4. 会使用字节流读写文本文件
InputSteam -> FileInputStream 字节输入流
构造:
FileInputStream(File file);
FileInputStream(String path);
常用方法:
int read(); 从输入流中读取一个字节数据
int read(byte[] b); 从输入流中读取字节数组b长度的字节数据,会将读取到的字节数据存储到字节数组中。返回值是真正读取到的总字节数量。
int read(byte[] b,int offset,int length); 从输入流中读取指定索引开始 指定长度的字节数据。
void close(); 关流!!!!!
int avaliable(); 返回可读取到的字节数量
OutputStream -> FileOutputStream 字节输出流
构造:(默认情况下,如果文件不存在 输出流会自动创建文件,并且每一次都会覆盖文件内容)
FileOutputStream(File file);
FileOutputStream(String path);
FileOutputStream(String path,boolean append); 可以继续追加数据
常用方法:
void write(int byte); 将一个字节写入输出流
void write(byte[] b); 将一个字节数组写入输出流
void write(byte[] b,int offset, int length); 将一个字节数组内指定索引开始 指定长度的字节数据写入输出流
void close(); 关流!!!
需求:利用字节流 将d盘下的a.txt 复制到 e盘下的c.txt
public class Test1 {
@SuppressWarnings("resource")
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
// 1.指定数据源
fis = new FileInputStream("d:/a.txt");
// 2.指定输出目的地
fos = new FileOutputStream("e:/c.txt");
// byte[] b = new byte[fis.available()];
byte[] b = new byte[1024];
int len = 0;
// 边读边写
// 循环读取输入流 每次读取1024个字节数据
while((len = fis.read(b)) != -1) {
fos.write(b,0,len);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
// 3.关流
try {
// 先开的后关
if(fos != null) {
fos.close();
}
if(fis != null) {
fis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
第三方库。
commons-io