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(); } }