1.输入输出流
流:流就是指一连串连续的字符,以先进先出的方式发送信息的通道。
输出流:用程序将数据写入到输出设备当中;
(图片来源于慕课网,侵删)
输入流:从输入设备当中读取数据到程序;
(图片来源于慕课网,侵删)
文件输入——读
文件输出——写
读入写出
2.File类
文件的概念:文件可认为是相关记录或放在一起的数据的集合。
File file1 = new File("D:\\feng\\io\\test.txt");
小知识点:
(1)Windows中的目录分隔符为“\”;
Linux中的目录分隔符为“/”。
通常在写路径时候,需要写成“\\”两个反斜杠,那是因为“\"本身是一个转移字符,”\\“才是代表了一个反斜杠。
(2)绝对路径:从盘符开始的路径;
相对路径:从当前路径开始的路径。
3.输入输出方式
字节流
a.字节输入流(InputStream)
I.FileInputStream
方法:public int read() //a.返回为-1时,表示已经读到文件的末尾。b.每执行一次,读取下一个字节c.返回值为读取字节个数;
public int read(byte[] b)将输入流的中最多b.length个字节读入byte数组b中。
public void close()//表示关闭此文件输入流并释放与此有关的所有系统资源。(很重要,别遗忘!)
以下是非常经典的核心代码:
while((n = fis.read()) != -1) {
System.out.print((char)n);
}
b.字节输出流(OutputStream)
I.FileOutputStream
方法:public void write() //将指定字节写入此文件输出流;
public void write(byte[] b)将b.length个字节从指定byte数组b写入此文件输出流当中。
public void close()//表示关闭此文件输出流并释放与此有关的所有系统资源。(很重要,别遗忘!)
&&简单介绍它们的子类——缓冲流:
BufferedOutputStream:当缓冲区满的时候,或者flush()强制清空缓冲,或者close()释放资源,才会执行write方法,
fos = new FileOutputStream("buffered.txt");
bos = new BufferedOutputStream(fos);
fos.write(50);
fos.write('a');
bos.flush();
4.字符流输入输出流
a.字符输入流(Reader)
b.字符输出流(Writer)
5.字节字符输入输出流
将网络上的二进制数据转换为字符串;
fis = new FileInputStream("imooc1.txt");
isr = new InputStreamReader(fis);
// fos = new FileOutputStream("imooc2.txt");
// osw = new OutputStreamWriter(fos);
int n = 0;
char[] cbuf = new char[10];
while((n = isr.read(cbuf)) != -1) {
osw.write(cbuf,0,n);
osw.flush();
}