java-day17

IO的概念

Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。

IO的分类

根据数据的流向分为:输入流输出流

  • 输入流 :把数据从其他设备上读取到内存中的流。

  • 输出流 :把数据从内存 中写出到其他设备上的流。

格局数据的类型分为:字节流字符流

  • 字节流 :以字节为单位,读写数据的流。

  • 字符流 :以字符为单位,读写数据的流。

字节流读写

字节流主要用于读写二进制文件,主要运用FileInputStream类和FileOutputStream类,运用这两个类的同时抛出IOException的异常

实现步骤:

1、写入:

1>  使用文件名称创建流对象
        FileOutputStream fos = new FileOutputStream(文件路径);  

2>使用FileOutputStream类中的write(byte butes)写入数据;

3>关闭流(fos.close())

4>如果还想继续写入数据,使用文件名称创建流对象
        FileOutputStream fos = new FileOutputStream("fos.txt",true);  

然后继续重复以上步骤。

2.读出:

1> 使用文件名称创建流对象
           FileInputStream fis = new FileInputStream(文件路径);

2>定义变量,保存数据
        int b ;

/*

定义字节数组,规定数据以n为长度个字节输出

   byte[] b = new byte[n];

*/

3>  循环读取
        while ((b = fis.read())!=-1) {
            System.out.println((char)b);
        }

/*

      while ((b = fis.read(b))!=-1) {
            System.out.println((char)b);
        }
*/
  4>   关闭资源
        fis.close();

字符流读写

字符流主要用于读写字符串

读:

1、创建FileReader流

2、

写:


 

写:

1.创建FileWrier流

2.  写出数据
          fw.write(int b); 

3.关闭流

4.如果还想继续写入数据,使用文件名称创建流对象
        FileWriter fos = new FileWriter("fos.txt",true);  

然后继续重复以上步骤。

另外:写出字符串write(String str)write(String str, int off, int len) ,每次可以写出字符串中的数据,更为方便,代码使用演示:

public class FWWrite {
    public static void main(String[] args) throws IOException {
        // 使用文件名称创建流对象
        FileWriter fw = new FileWriter("fw.txt");     
          // 字符串
          String msg = "武汉程序员";
      
          // 写出字符数组
          fw.write(msg); //武汉程序员
      
        // 写出从索引2开始,2个字节。索引2是'程',两个字节,也就是'程序'。
        fw.write(msg,2,2);    // 程序
          
        // 关闭资源
        fos.close();
    }
}

字符流与字节流共同的方法:

  • flush :刷新缓冲区,流对象可以继续使用。

  • close:先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。

写的时候注意;当前流刷新后,如果再写入内容,写完后必须再次刷新,否则后面写入的内容不能显示出来,

即便是flush方法写出了数据,操作的最后还是要调用close方法,释放系统资源。

 Properties类

java.util.Properties 继承于Hashtable ,来表示一个持久的属性集。它使用键值结构存储数据,每个键及其对应值都是一个字符串。该类也被许多Java类使用,比如获取系统属性时,System.getProperties 方法就是返回一个Properties对象。

构造方法

  • public Properties() :创建一个空的属性列表。

基本的存储方法

  • public Object setProperty(String key, String value) : 保存一对属性。

  • public String getProperty(String key) :使用此属性列表中指定的键搜索属性值。

  • public Set<String> stringPropertyNames() :所有键的名称的集合。

与流相关的方法

  • public void load(InputStream inStream): 从字节输入流中读取键值对。

参数中使用了字节输入流,通过流对象,可以关联到某文件上,这样就能够加载文本中的数据了。文本数据格式:

public class ProDemo2 {
    public static void main(String[] args) throws FileNotFoundException {
        // 创建属性集对象
        Properties pro = new Properties();
        // 加载文本中信息到属性集
        pro.load(new FileInputStream("read.txt"));
        // 遍历集合并打印
        Set<String> strings = pro.stringPropertyNames();
        for (String key : strings ) {
              System.out.println(key+" -- "+pro.getProperty(key));
        }
     }
}
输出结果:
filename -- a.txt
length -- 209385038
location -- D:\a.txt

猜你喜欢

转载自blog.csdn.net/weixin_41804367/article/details/88988086