Java教程

Java IO

本文主要是介绍Java IO,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

IO流

流的概念和作用:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作

  • I: input 输入 外界(磁盘、网络、键盘…)---->程序

  • O: output 输出 程序---->外界(磁盘、网络、显示器…)

IO流分类

按流向分

  • 输入流
  • 输出流

按处理的单位分

  • 字节流 视频、音频
  • 字符流 长文本

在这里插入图片描述

在这里插入图片描述

字节流和字符流的区别

字节流读取单个字节,字符流读取单个字符(一个字符根据编码的不同,对应的字节也不同,如 UTF-8 编码是 3 个字节,中文编码是 2 个字节。) 字节流用来处理二进制文件(图片、MP3、视频文件),字符流用来处理文本文件(可以看做是特殊的二进制文件,使用了某种编码,人可以阅读)。 简而言之,字节是个计算机看的,字符才是给人看的。

字节转字符Input/OutputStreamReader/Writer

编码就是把字符转换为字节,而解码是把字节重新组合成字符。

如果编码和解码过程使用不同的编码方式那么就出现了乱码

GBK 编码中,中文字符占 2 个字节,英文字符占 1 个字节;
UTF-8 编码中,中文字符占 3 个字节,英文字符占 1 个字节;
UTF-16be 编码中,中文字符和英文字符都占 2 个字节

  • 从数据来源或者说是操作对象角度看,IO 类可以分为:
    在这里插入图片描述

FileInputStream

字节输入流 磁盘上的文件

public class FileInputStream extends InputStream

构造器

new FileInputStream(File file);
new FileInputStream(String pathname);

读取方法

//读取一个字节(int表现形式)   读取到末尾再读返回-1
 public int read() throws IOException {
     return read0();
 }
//将读取的内容放在数组中,返回读取字节的个数,如果没有了返回-1。
//在第二次以后读取并不会将byte数组中的数据清空
public int read(byte b[]) throws IOException {
    return readBytes(b, 0, b.length);
}
//设置读取的字节数是len个,设置在数组的那个位置开始存off索引位置
public int read(byte b[], int off, int len) throws IOException {
    return readBytes(b, off, len);
}

IO流的操作步骤

a. 创建流对象 in=new FileInputStream(file);

b. 读写操作 in.read();

c. 关闭资源 in.close();

FileOutputStream

要保证文件前的路径是存在的,文件可以是不存在的,如果不存在创建流对象时会新建文件

构造器

new FileOutputStream(File file); //默认是将原内容覆盖掉
new FileOutputStream(File file,boolean append); //传true设置为追加内容
new FileOutputStream(String pathname); //默认是将原内容覆盖掉
new FileOutputStream(String pathname,boolean append); //传true设置为追加内容

方法

write(int byte); //写入一个字节
out.write(byte[] b); //将byte数组中的数据全部写入
out.write(byte[] b, int off, int len); //设置从数组的off索引位置开始写,写len个字节
out.flush();   //刷新
out.close(); //关闭资源

FileReader

public class FileReader extends InputStreamReader {

    public FileReader(String fileName) throws FileNotFoundException {
        super(new FileInputStream(fileName));
    }


    public FileReader(File file) throws FileNotFoundException {
        super(new FileInputStream(file));
    }

    public FileReader(FileDescriptor fd) {
        super(new FileInputStream(fd));
    }

}

FileWriter

public class FileWriter extends OutputStreamWriter {


    public FileWriter(String fileName) throws IOException {
        super(new FileOutputStream(fileName));
    }

    
    public FileWriter(String fileName, boolean append) throws IOException {
        super(new FileOutputStream(fileName, append));
    }

    
    public FileWriter(File file) throws IOException {
        super(new FileOutputStream(file));
    }

    public FileWriter(FileDescriptor fd) {
        super(new FileOutputStream(fd));
    }

}

File类

概述:文件和目录路径名的抽象表示形式(对象),与平台(操作系统)无关

功能:File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身

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

构造器

File(String pathname);
//a. 绝对路径(从盘符开始)
//F:\java.txt
//b. 相对路径(从当前项目下开始寻找)
//src\\java.txt
File(File parentFile,String child);
	由父级的File对象和子级的路径构建一个file对象
File(String parentPath,String child);
	由父级的路径和子级的路径构建一个file对象

方法

//文件检测
	exists()   //是否存在
	canWrite()  //是否可写
	canRead()  //是否可读
	isFile()   //判断是否是文件(如果文件不存在返回false)
	isDirectory()  //判断是否是文件夹(如果文件夹不存在返回false)
//目录操作
	mkdir()   //新建一级文件夹
	mkdirs()  //新建多级文件夹
	delete()  //只能删除空白文件夹
	list()    //获得文件夹内所有内容的名字   String[]
	listFiles()  //获得文件夹内所有内容的File对象    File[]
//文件操作相关 
	createNewFile()  //新建文件(受检异常IOException)  有可能文件所在的路径是不存在的
	delete()   //删除文件
//访问文件名:
	getName()  //获得文件或文件夹名字
	getPath()  //获得路径
	getAbsoluteFile() // 获得由绝对路径获得的File类对象 
	getAbsolutePath()  //获得file对象的绝对路径
	getParent()  //获得当前对象上一级File对象的路径(String)
	getParentFile()  //获得当前对象上一级File对象(File)
	toPath()  //获得路径
	renameTo(File newName)  //重命名
//获取常规文件信息	
	lastModified()  //最后一次修改的时间   (毫秒数)
	length()     //获得字节数

Java输入输出流

这篇关于Java IO的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!