二十一、输入和输出流的介绍简写I/O
一、到现在为止,我们学到的有变量,数组,对象,对象数组,集合,文件的操作
二、了解输入和输出的概念
当我们在利用程序将文件、RAM内存、键盘输入的东西,获取到的这个过程中, 他会使用到你的系统的InputStream(输入流)
当你在利用程序将一些内容输出到文件RAM、内存、控制台等的时候,这个过程中里面会使用到了系统的 OutputStraeam(输出流)
三、了解使用File类操作文件或者目录
File文件类是在java.io.file包下。
File文件常用的API
①long length();获取文件的大小 单位:字节
②boolean exists();判断文件或者是目录是否存在
③Boolean isFile();判断是否是文件
④boolean isDirectory();判断是否是文件夹
⑤String getPath(); 获取相对路径
⑥String getAbsolutePath();获取绝地对路径
⑦Boolean delete();删除文件或者可以删除非空的目录
⑧Boolean createNewFile();创建新得文件
⑨Boolean mkdir();创建新的文件夹
⑩String getName();获取文件名,带有扩展名的
File类的常用就是上述这些,在以后的需求中你如果用到了可以去自行查阅API文档进行解决
list也是File类中的一种常用的方法
四、理解流的概念和分类
流:电流,水流,车流,人流,乃至于我们在计算机中的数据流
流:是代表的一组有序的数据序列,以先进先出的形式进行传递(流动)
按照流的走向:流的走向是相对的,我们一般就是以计算机的程序作为参考对象,来判断是读取还是在写入
1.输入流进行的是 读 这个操作
2.输出流进行的是 写 这个操作
按照处理数据的单元
1.字节流
它可以用来以字节为单位操作数据,一般是用来作为数据传递的时候使用的,字节流可以操作的有普通的文本文件,图片,视频,音频等所有的
2.字符流
他可以操作的是文本,一般用来阅读一些内容‘
字符流可以操作能被Notepad++操作的打开不会出现乱码的内容
五、会使用字节流进行读写文本内容
1.InputStream(File file)–>FileInputStream字节输入流
常用的构造方法:
FileInputStream(File file);
FileInputStream(String path);
常用的方法:
①in read();从输入流中读取一个字节数据
②in read(byte[] b);从输入流中读取字节数组B长度的字节数据,会将读取到的字节数据储存到字节数组中,返回值是真正读取到的总字节数量
③int read(byte[] b,int offset,int length);从输入流中读取指定的索引开始,指定长度的字节数据
④void close();关流
⑤int avaliable();返回可读取到的字节数量
2.OutputStream–>FileOutputStream字节输出流
1.构造方法:(默认情况下,如果文件不存在,输出流会自己创建文件,并且每次都会覆盖文件的内容)
①FileOutputStream(File file);
②FileOutputStream(String path);
③FileOutputStream(String path,boolean append);可以继续追加数据
2。常用的方法
void write(int byte);将一个字节写入到输出流中
void writer(byte[] b,int offer,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