一、IS与OS
节点流与处理流
1、按照流是否直接与特定的地方(如磁盘、内存、设备等)项链,分为节点流和处理流两类。
2、节点流:可以从或向一个特定的地方(节点)读写数据。
3、处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用时间数据读写。
4、处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
5、通常节点流也称为低级流。
6、通常处理刘也称为高级流或过滤流。
IS和OS常用方法:
1、InputStream是所有字节输入流的父类,其定义了基础的读取方法,常用的方法如下:
int read():
读取一个字节,以int形式返回,该int值得“低八位”有效,若返回值为-1则表示EOF。
int read(byte[] d)
尝试最多读取给定数组的length个字节并存入该数组,返回值为实际读取到的字节量。
2、OutputStream是所有字节输出流的父类,其定义了基础的写出方法,常用的方法如下:
void write(int d)
写出一个字节,写的是给定的int的“低八位”
void write(byte[] d)
将给定的字节数组中的所有字节全部写出
文件流
创建FOS对象(重写模式):
1、FileOutputStream是文件的字节输出流,我们使用该流可以以字节为单位将数据写入文件。
构造方法:
FileOutputStream(FIle file):
创建一个向指定File对象表示的文件中写出数据的文件输出流
FileOutputStream(String filename):
创建一个向具有指定名称的文件中写出数据的文件输出流。
注:若指定的文件已经包含内容,那么当使用FOS对其写入数据时,会将该文件中原有数据全部清除。
创建FIS对象
2、FileInputStream是文件的字节输入流,我们使用该流可以以字节为单位从文件中读取数据。
FIleInputStream有两个常用的构造方法:
FileInoutStream(File file)
创建一个从指定File对象表示的文件中读取数据的文件输入流。
FileInoutStream(String name)
创建用于读取给定的文件系统中的路径名name所指定的文件的文件输入流。
代码:
package day01;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FileOutputStreamDemo {
public static void main(String[] args) throws IOException {
File file=new File("raf.txt");
FileInputStream fis=new FileInputStream("raf1.txt");
byte[] b=new byte[300];
int len=fis.read(b);
String str=new String(b,0,len);
System.out.println(str);
//读完之后要关闭
fis.close();
}
}
测试:
(如果出现乱码,则清空txt文件重新输入)
代码:
package day01;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemowrite {
public static void main(String[] args) throws IOException {
FileOutputStream fos=new FileOutputStream("raf.txt");
String str="要下课了";
byte[] by=str.getBytes("GBK");
fos.write(by);
String str1="要下课了";
byte[] by1=str.getBytes("GBK");
fos.write(by1);
System.out.println("写出完毕");
fos.close();
}
}
测试结果: