Io流1的笔记

15 篇文章 0 订阅

O,即in和out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。

Java 中是通过流处理IO 的,那么什么是流?

流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。

当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。

一般来说关于流的特性有下面几点:

先进先出:最先写入输出流的数据最先被输入流读取到。
顺序存取:可以一个接一个地往流中写入一串字节,读出时也将按写入顺序读取一串字节,不能随机访问中间的数据。(RandomAccessFile除外)
只读或只写:每个流只能是输入流或输出流的一种,不能同时具备两个功能,输入流只能进行读操作,对输出流只能进行写操作。在一个数据传输通道中,如果既要写入数据,又要读取数据,则要分别提供两个流。
File类
至于IO流,也就是输入输出流,从文件出发到文件结束,至始至终都离不开文件,所以IO流还得从文件File类讲起。

1.1 File概述
java.io.File 类是专门对文件进行操作的类,只能对文件本身进行操作,不能对文件内容进行操作。
java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

 

怎么理解上面两句话?其实很简单!

第一句就是说File跟流无关,File类不能对文件进行读和写也就是输入和输出!
第二句就是说File主要表示类似D:\\文件目录1与D:\\文件目录1\\文件.txt,前者是文件夹(Directory)后者则是文件(file),而File类就是操作这两者的类。
1、 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
2、 public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
3、 public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
1. 一个File对象代表硬盘中实际存在的一个文件或者目录。
2.  File类构造方法不会给你检验这个文件或文件夹是否真实存在,因此无论该路径下是否存在文件或者目录,都不影响File对象的创建。
// 文件路径名 
String path = "D:\\123.txt";
File file1 = new File(path); 

// 文件路径名
String path2 = "D:\\1\\2.txt";
File file2 = new File(path2);     -------------相当于D:\\1\\2.txt

// 通过父路径和子路径字符串
 String parent = "F:\\aaa";
 String child = "bbb.txt";
 File file3 = new File(parent, child);  --------相当于F:\\aaa\\bbb.txt

// 通过父级File对象和子路径字符串
File parentDir = new File("F:\\aaa");
String child = "bbb.txt";
File file4 = new File(parentDir, child); --------相当于F:\\aaa\\bbb.txt
File的常用方法主要分为获取功能、获取绝对路径和相对路径、判断功能、创建删除功能的方法
1、public String getAbsolutePath() :返回此File的绝对路径名字符串。

2、public String getPath() :将此File转换为路径名字符串。

3、public String getName() :返回由此File表示的文件或目录的名称。

4、public long length() :返回由此File表示的文件的长度。
   java.io.Inputstream    字节输入流
    java.io.Outputstream    字节输出流
    java.io.Reader    字符输入流
    java.io.Writer    字符输出流
    
    四大家族的首领都是抽象类。(abstract class)
    注意:在java中只要"类名"以stream结尾的都是字节流。以"Reader/Writer"结尾的都是字符流
    
    所有的流都实现了:
        java.io.closeable接口,都是可关闭的,都有close()方法。
        流毕竟是一个管道,这个是内存和硬盘之间的通道,用完之后一定要关闭,
        不然会耗费(占用)很多资源。养成好习惯,用完流一定要关闭。
    
    所有的输出流都实现了:
        java.io.Flushable接口,都是可刷新的,都有flush()方法。
        养成一个好习惯,输出流在最终输出之后,一定要记得flush()
        刷新一下。这个刷新表示将通道/管道当中剩余未输出的数据
        强行输出完(清空管道!)刷新的作用就是清空管道。
        注意:如果没有flush()可能会导致丢失数据。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值