ok家人们今天继续学习IO流,
一.字节流
存储时,都是使用二进制来保存。
2.1 字节输出流OutputStream
OutputStream是字节输出流的超类(父类),
方法
java">public abstract void write(int b):
一次写一个字节数据。public void write(byte[] b):
一次写一个字节数组数据。public void write(byte[] b, int off, int len) :
一次写一个字节数组的部分数据public void close():
关闭此输出流并释放与此流相关联的任何系统资源。
下面是他的子类FileOutputStream。
2.2 FileOutputStream类
FileOutputStream 类的概述
文件输出流,用于将数据写入文件中。
FileOutputStream 类的构造方法
java">public FileOutputStream(File file):创建文件输出流以写入由指定
的 File对象表示的文件。public FileOutputStream(String name): 创建文件输出流以指定
的名称写入文件。FileOutputStream fos = new FileOutputStream('文件地址')//数据写入文件
fos.wirte();//释放资源
fos.close();
java">public class DemoTest {public static void main(String[] args) throws
Exception {//1.创建流对象FileOutputStream fis= new
FileOutputStream("java_0724_0708\\hello.txt");//2.操作,写字节数组//byte[] bs={97,98,99,100,101};String str="你好";byte[] bytes = str.getBytes();//[-28, -67,
-96, -27, -91, -67]fis.write(bytes);//3.关闭流,释放资源fis.close();}
}
java">public class DemoTest {public static void main(String[] args) throws
Exception {//1.创建流对象FileOutputStream fis= new
FileOutputStream("java_0724_0708\\hello.txt");//2.操作 写字节数组String str="你好";//[-28, -67, -96, -27, -91, -67]//utf8编码一个中文占3个字节,gbk编码一个中文占2个字
节fis.write(str.getBytes(),0,6);//3.关闭流 释放资源fis.close();}
}
2.3 数据换行与追加
数据追加续写
java">public FileOutputStream(String name, boolean append):
创建文件输出流以指定的名称写入文件。如果第二个参数为true ,
不会清空文件里面的内容FileOutputStream fos = new FileOutputStream("/相对路径/绝对路径",true);
各个系统的换行符
java">windows : \r\n
linux : \n
mac : \r
2.4 字节输入流InputStream
InputStream是所有字节输入流的父类,
InputStream构造方法
java">public abstract int read(): 每次可以读取一个字节的数据,提
升为int类型,读取到文件末尾,返回 -1。public int read(byte[] b): 每次读取b的长度个字节到数组中,
返回读取到的有效字节个数,读取到末尾时,返回 -1。public void close():关闭此输入流并释放与此流相关联的任何系
统资源。
下面是他的子类FileInputStream类。
2.5 FileInputStream类
文件输出流,从文件读取数据。
FileInputStream 类的构造方法
java">FileInputStream(File file):
通过打开与实际文件的连接来创建一个FileInputStream
,该文件由文件系统中的文件对象 file命名。FileInputStream(String name):
通过打开与实际文件的连接来创建一个 FileInputStream ,
该文件由文件系统中的路径名 name命名。FileInputStream fis = new FileInputStream("文件路径");
2.6 读取字节
java">FileInputStream fis = new FileInputStream("文件路径");fis.read();//每次读取一个字节方法:读取文件所有内容int len;while((len=fis.read())!=-1){System.out.println(len);
}
2.7 读字节数组
java">FileInputStream fis = new FileInputStream("文件路径");fis.read();//每次读取一个字节方法:读取文件所有内容
byte[] buf = new byte[1024];int len;while((len=fis.read(buf))!=-1){System.out.println(buf,0,len);
}
三.字节缓冲流
字节缓冲流 : BufferedInputStream , BufferedOutputStream
字符缓冲流 : BufferedReader , BufferedWriter
方法
java">public BufferedInputStream(InputStream in) :创建一个 新的
缓冲输入流。public BufferedOutputStream(OutputStream out): 创建一个
新的缓冲输出流。
java">String src = "文件路径";
String dest= "文件路径";
try(BufferedInputStream bis = new BufferedInputStream(src);BufferedOutputStream bos = new BufferedOutputStream(dest);
){//操作}catch (IOException e){e.printStackTrace();}
四.Properties集合
4.1 Properties类的概述
它使用键值结构存储数据,继承于 Hashtable
4.2 Properties类的构造方法
java">public Properties() :创建一个空的属性列表。Properties prop = new Properties();
4.3 Properties类存储方法
java">public Object setProperty(String key, String value):
保存一对属性。 public String getProperty(String key) :
使用此属性列表中指定的键搜索属性值。public Set stringPropertyNames() :
获取所有键的名称的集合。Properties prop = new Properties();properties.setProperty("张三", "北京");Set<String> strings = properties.stringPropertyNames();for (String key : strings ) {System.out.println(key+" --
"+properties.getProperty(key));
4.4 Properties 类与流相关的方法
java">public void load(Reader reader):以字符流形式 , 把文件中的
键值对, 读取到集合中public void store(OutputStream out, String comments):把集
合中的键值对,以字节流形式写入文件中 , 参数二为注释public void store(Writer writer, String comments):把集合中
的键值对,以字符流形式写入文件中 , 参数二为注释
java"> Properties prop=new Properties();//读取 db.properties属性配置文件FileInputStream fis=newFileInputStream("文件路径");prop. Load(fis);// 关闭流,释放资源fis.close();System.out.println(prop);
java">Properties prop = new Properties();//存储元素prop.setProperty("name","zhangsan");prop.setProperty("age","18");//把集合中的数据,写入到配置文件FileOutputStream fos=new
FileOutputStream("文件路径");prop. Store(fos,"注释");// 关闭流fos.close();}
}
4.5 ResourceBundle(抽象类)工具类
可以用子类 PropertyResourceBundle 来读取以.properties 结尾的配置文件
ResourceBundle 中常用方法:
java">String getString(String key) : 通过键,获取对应的值ResourceBundle rb = ResourceBundle.getBundle("##");//不用写后缀名properties
java">文件username=zhangsan
password=123456
java"> String username = rb.getString("username");String password = rb.getString("password");System.out.println(username);//zhangsanSystem.out.println(password);//123456
ok了家人们明天见。