强哥说Java--IO流(一)

简介: 强哥说Java--IO流(一)

一、File类的使用



File类的使用


java.io.File类: 文件和文件目录路径的抽象表示形式,与平台无关


File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流


想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象, 可能没有一个真实存在的文件或目录


File对象可以作为参数传递给流的构造器


路径分隔符

windows:\

unix:/


常用方法


package com.caq.java;
import org.junit.Test;
import java.io.File;
/**
 * File类的使用
 *
 * 1.File类的一个对象,代表一个文件或一个文件目录
 * 2.File类声明在java.io包下
 *
 *
 *
 *
 */
public class FileDemo01 {
    /**
     1.如何创建File类的实例
        File(String pathname)
        File(String parent,String child)
     2.相当路径:相较于某个路径下,指明的路径
    绝对路径:包含盘符在内的文件或者文件夹的路径
     3.路径分隔符
        windows:\\
        unix:/
     */
    @Test
    public void test1(){
        /**
         public File(String pathname)
         以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果
         pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
             绝对路径:是一个固定的路径,从盘符开始
             相对路径:是相对于某个位置开始
         public File(String parent,String child)
            以parent为父路径,child为 子路径创建File对象。
         public File(File parent,String child)
             根据一个父File对象和子文件路径创建File对象
         */
        //构造器一
        File f1 = new File("hello.txt");//相对于当前moudle
        File f2 = new File("D:\\Code\\he.txt");//加两个杠是因为不想让它进行转义
        System.out.println(f1);
        System.out.println(f2);
        //构造器二
        File f3 = new File("\\Code", "test");
        System.out.println(f3);
        //构造器三
        File f4 = new File(f3,"hello.txt");
        System.out.println(f4);
    }
}


二、IO流原理及流的分类



JavaIO原理

I/O是Input/Output的缩写,I/O技 术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等


Java程序中,对于数据的输入/输出操作以==“流(stream“==的方式进行


java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。


输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中


输出output:将程序(内存) 数据输出到磁盘、光盘等存储设备中


image.png


流的分类

按操作数据单位不同分为:字节流(8bit),字符流(16bit)


字节就是一个byte(010101),常用来处理图片啊,视频啊之类的


一个一个的char(2个字节),常用来处理字符,比如文本之类的


按数据流的流向不同分为:输入流,输出流


输入:读取外部数据到内存中


输出:将内存中数据输出到磁盘,光盘等位置


按流的角色的不同分为:节点流,处理流


节点流:流直接作用在节点上


处理流:流作用在已有的流上的


流的分类


image.png


节点流和处理流

节点流 :直接从数据源或目的地读写数据


image.png


处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。


image.pngimage.png



InputStream & Reader

InputStream和Reader是所有输入流的基类


InputStream (典型实现: FileInputStream)


int read()

int read(byte[] b)

int read(byte[] b, int off, int len)


Reader (典型实现: FileReader )


int read()

int read(char [] c)

int read(char 0 C, int off, int len)



程序中打开的文件IO资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件IO资源


FileInputStream从文件系统中的某个文件中获得输入字节FileInputStream用于读取非文本数据之类的原始字节流。要读取字符流,需要使用FileReader


InputStream

int read()

从输入流中读取数据的下一个字节。返回0到255范围内的int字节值。如果因为己经到达流末尾而没有可用的字节,则返回值-1


int read(byte[] b)

从此输入流中将最多b.length 个字节的数据读入一个byte数组中。如果因为已经到达流末尾而没有可用的字节,则返回值-1。否则以整数形式返回实际读取的字节数。


int read(byte[] b, int off,int len)

将输入流中最多len 个数据字节读入byte 数组。尝试读取len个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数。如果因为流位于文件末尾而没有可用的字节,则返回值-1。


public void close() throws lOException

关闭此输入流并释放与该流关联的所有系统资源


Reader

int read()

读取单个字符。作为整数读取的字符,范围在0到65535之间(0x00-0ffff (2个字节的Unicode码),如果已到达流的末尾,则返回-1


int read(char[] cbuf)

将字符读入数组。如果已到达流的末尾,则返回-1。否则返回本次读取的字符数。


int read(char[] cbuf,int off,int len)

将字符读入数组的某一部分。 存到数组cbuf中,从off处开始存储,最多读len个字符。如果已到达流的末尾,则返回-1。否则返回本次读取的字符数。


public void close() throws l0Exception

关闭此输入流并释放与该流关联的所有系统资源。


OutputStream & Writer

OutputStream


Writer

相关文章
|
2月前
|
存储 Java API
Java IO流
Java IO流
30 2
|
2月前
|
Java Linux
|
7月前
|
缓存 Java 开发者
|
10月前
|
Java Linux Android开发
java中iO流
java中iO流
54 0
|
12月前
|
Java 数据处理 开发者
java IO流
Java I/O流是指将数据从一个源(如文件、网络)读取到内存中,或将数据从内存中写入到一个目标(如文件、网络)的流程。Java I/O流包括了字节流和字符流两种类型,其中字节流处理单个字节(8位)的数据,字符流处理Unicode字符的数据(可以看作是由多个字节组成的数据)。 Java I/O流的类库包括了许多实现类,如FileInputStream、FileOutputStream、BufferedReader、BufferedWriter等,它们都有其特定的用途和使用场景。Java I/O流的设计目的是为了方便开发者进行数据的读取和写入操作,提高程序的效率和可读性。 Java I/O流
63 0
|
缓存 Java
Java io流 详解
Java io流 详解
85 0
|
Java 数据安全/隐私保护
【Java】IO流练习
【Java】IO流练习
89 0
【Java】IO流练习
|
存储 设计模式 Java
Java IO流详解
Java IO流详解
143 0
|
Java
java io流
java io流
93 0
|
存储 Java 索引
Java之IO流使用
1.2 文件流 (1)文件在程序中是以流的形式来操作的 (2)流:数据在数据源(文件)和程序(内存)之间经历的路径 ①输入流:数据从数据源(文件)到程序(内存)的路径 ②输出流:数据从程序(内存)到数据源(文件)的路径
80 0
Java之IO流使用