IO流
IO流:输入输出流
流是一组由顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流。
流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的警醒数据操作。
IO流的分类:
根据数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流
如何选择使用使用字节流还是字符流:
一般操作非文本文件时,使用字节流,操作文本文件时,建议使用字符流
字节流
字节输出流
OutputStream类
定义:
public abstract class OutputStream extends Object implements Closeable,Flushable
此抽象类是表示输出字节流的所有类的超类。
向文件中输出,使用FileOutputStream类
public static void out(){
//0、确定目标文件
File file = new File("c:\\Javatest\\test.txt");
if(!file.exists()){
try {
file.createNewFile();
System.out.println("文件创建成功");
} catch (IOException e) {
e.printStackTrace();
}
//1、创建一个文件输出流对象
try {
OutputStream out = new FileOutputStream(file); //加上true为 在文件后追加
//2、输出的内容
String info = "真正的勇士敢于直面淋漓的鲜血";//文件中的换行为 \r\n
//3、把文件写入到文件
out.write(info.getBytes());
//4、关闭流
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
字节输入流
InputStream类
定义
public abstream class InputStream extends Object implements Closeable
此抽象类是表示字节输入流的所有类的超类。
FileInputStream 从文件系统中的某个文件中获得输入字节。
public static void in(){
//0、确定目标文件
File file = new File("c:\\Javatest\\test.txt");
//1、创建一个文件输入流对象
try {
InputStream in =new FileInputStream(file);
//2、读取文件
byte[] bytes = new byte[1024];
StringBuilder buf = new StringBuilder();
int len = -1;//表示每次读取的字节长度
//把数据读入到数组中,并返回读取的字节数,当不等-1时,表示读取到数据,等于-1表示文件已经读完
while((len = in.read(bytes)) != -1){
//根据读取到的字节数组,再转换成字符串内容,添加到StringBilder中
buf.append(new String(bytes,0,len));
}
System.out.println(buf);
//3、关闭输入流
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}