013IO流(java基础)

目录

一、IO流介绍

二、File

1、介绍一下File类:java.io.File

2、构造器:

3、路径分隔符

4、常用方法

三、流的分类

四、流的使用

1、使用步骤

2、使用说明

3、使用示例


一、IO流介绍

字节流的抽象基类:

        InputStream,OutputStream

字符流的抽象基类:

        Reader,Writer

由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀,如InputStream的子类FileInputStream,Reader的子类FileReader

二、File

1、介绍一下File类:java.io.File

  • File对象可以作为参数传递给流的构造器
  • File 能新建、删除、重命名文件和目录
  • 但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流

2、构造器:

  • public File(String pathname)【文件的路径,可以是绝对路径也能是相对路径】
  • public File(String parent,String child)【parent是父级目录,child是相对父级目录下的子路径】
  • public File(File parent,String child)【parent是父类对象,child是相对父级目录下的子路径】

3、路径分隔符

因为不同的平台可能使用的路径分隔符不同,有用“\\”“、”\“”或者"/"的,为了解决跨平台的问题,java提供了File.seperator常量,能自动根据操作系统,动态使用不同的分隔符

File file1 = new File("d:\\testIO");
File file2 = new File("d:"+File.separator+"testIO");

4、常用方法

  • public String getAbsolutePath():获取绝对路径
  • public boolean isDirectory():判断是否是文件目录
  • public boolean isFile() :判断是否是文件
  • public boolean exists() :判断是否存在
  • public boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建
  • public boolean delete():删除文件或者文件夹(删除的文件夹下不能有文件)
  • public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目路径下。

三、流的分类

  • 按照“流”的数据流向,可以将其化分为:输入流和输出流
  • 按照“流”中处理数据的单位,可以将其区分为:字节流和字符流。在java中,字节是占1个Byte,即8位;而字符是占2个Byte,即16位。

四、流的使用

1、使用步骤

不管使用的是字节流还是字符流,其基本的操作流程几乎是一样的,以文件操作为例。
根据文件路径创建File类对象 ;

  • 根据字节流或字符流的子类实例化父类对象 ;

  • 进行数据的读取或写入操作

  • 关闭流(close())

对于IO操作属于资源处理,所有的资源处理操作(IO操作、数据库操作、网络)最后必须要进行关闭。

2、使用说明

我们可以先了解下面这五个类

inputStream-->FileInputStream

OutputStream-->FileOutputStream

字节流读取文件的时候,拿到的是byte型数据

写入文件的时候,也只能写入字节,可以通过getBytes()转换

Reader-->FileReader

Writer-->FileWriter

字符流读取文件的时候,拿到的是char型数据

写入文件的时候,支持直接写入字符串,Writer类提供了一个直接输出字符串的方法

字节流转换成字符流

通过Writer的子类OutputStreamWriter或者Reader的子类InputStreamReader

一定要记得关闭流!!!被引用的要后关!例如下面的testConvert方法中,writer要先关

3、使用示例

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

public class TestFile {
	public static void main(String[] args) {
		//操作过程都是分三步:初始化--》读或写--》关闭流
		try {
			testInputStream();
			testOutputStream();
			testReader();
			testWriter();
			testConvert();
			testConvert2();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	private static void testConvert2() throws IOException {
		File file = new File("D:\\bq\\c.txt");
		if (file.exists()) {
			InputStream is = new FileInputStream(file);
			Reader reader = new InputStreamReader(is);
			char[] chs = new char[1024];
			int len = reader.read(chs);
			System.out.println(new String(chs, 0, len));
			reader.close();
		}
		
	}

	private static void testConvert() throws IOException {
		File file = new File("D:\\bq\\wirte\\c.txt");
		if (!file.getParentFile().exists()) {
			file.getParentFile().mkdirs();
		}
		OutputStream ot = new FileOutputStream(file);
		Writer writer = new OutputStreamWriter(ot);
		writer.write("我是testConvert!!!!");
		writer.close();
		ot.close();
	}

	private static void testWriter() throws IOException {
		File file = new File("D:\\bq\\wirte\\b.txt");
		if (!file.getParentFile().exists()) {
			file.getParentFile().mkdirs();
		}
		Writer writer = new FileWriter(file);
		String msg = "我是testWriter!";
		writer.write(msg);
		writer.close();
		
	}

	private static void testReader() throws IOException {
		File file = new File("D:\\bq\\b.txt");
		if (file.exists()) {
			Reader reader = new FileReader(file);
			char[] chs = new char[1024];
			int len = reader.read(chs);
			System.out.println(new String(chs, 0, len));
			reader.close();
		}
		
	}

	private static void testOutputStream() throws IOException {
		File file = new File("D:\\bq\\wirte\\a.txt");
		if (!file.getParentFile().exists()) {
			file.getParentFile().mkdirs();
		}
		OutputStream ot = new FileOutputStream(file);
		String msg = "我是testOutputStream!";
		ot.write(msg.getBytes());
		ot.close();
	}

	private static void testInputStream() throws IOException {
		File file = new File("D:\\bq\\a.txt");
		if (file.exists()) {
			InputStream is = new FileInputStream(file);
			byte[] arr = new byte[1024];
			int len = is.read(arr);// 此时数据读取到数组中
			System.out.println(new String(arr, 0, len));
			is.close();

		}
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值