欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

达内javaSE_day12 学习笔记 —— IO流

程序员文章站 2022-05-25 21:16:04
...

IO流

1. File类

  • 创建对象时,不能创建文件夹和文件,只是对文件的一个描述

1.1 构造方法创建对象的三种格式

//构造方法创建对象的三种格式
	public static void test1(){
		File file = 
				new File("c:\\a\\b\\a.txt");//方式1
		File file2  = 
				new File("c:\\a\\b","a.txt");//方式2
		
		File path = 
				new File("c:\\a\\b");
		File file3 = 
				new File(path,"a.txt");//方式3
		System.out.println(file+","+file2+","+file3);
	}

1.2 文件夹的创建和删除

  • mkdir:创建一个文件夹
  • mkdirs:创建多个文件夹
  • delete:删除一个文件夹,若有多个文件夹,则delete多次即可
    达内javaSE_day12 学习笔记 —— IO流

1.3 创建文件

  • exists():判断文件是否存在
  • createNewFile():新建文件
    达内javaSE_day12 学习笔记 —— IO流

1.4 常用方法

达内javaSE_day12 学习笔记 —— IO流

2. IO: Input 、 Output

达内javaSE_day12 学习笔记 —— IO流

2.1 分类

  1. 按照流的读写方式
    字节流

    • InputStream:由abstract修饰 ,(字节流输入的父类)
    • OutputStream 由abstract修饰,(字节流输出的父类)

    字符流

    • Reader : 由abstract修饰 ,(字符流输入的父类)
    • Writer 由abstract修饰,(字符流输出的父类)

都由abstract修饰,本身不能创建对象

  1. 按照流的方向
    输入流、输出流

  2. 按照是否能直接操作数据文件
    节点流:直接在构造方法中来传入要读写的文件对象或文件名。
    处理流:不能直接在构造方法中来传入要读写的文件对象或文件名。

2.2 核心方法

  • 输入流的核心方法:read()
  • 输出流的核心方法:write()

2.3 操作的数组类型

  • 字节流:byte类型
  • 字符流:char类型

2.4 使用步骤

(1)选择流类(输入还是输出)
(2)确定方法(read还是write)
(3)关闭流 close

2.5 文件字节输入输出流——FileInputStream和FileOutputStream

达内javaSE_day12 学习笔记 —— IO流
达内javaSE_day12 学习笔记 —— IO流
达内javaSE_day12 学习笔记 —— IO流
达内javaSE_day12 学习笔记 —— IO流
达内javaSE_day12 学习笔记 —— IO流
达内javaSE_day12 学习笔记 —— IO流

2.6 对象输入输出流——ObjectInputStream 和ObjectOutputStream

用ObjectinputStream读写对象时要求对象所在的类是序列化的类。

  • 对象的序列化:把对象转换成二进制的流,写到数据文件
  • 对象的反序列化:将数据文件中二进制的流代表的数据恢复为对象
  • ***:在 序列化存储/反序列化读取或者是序列化传输/反序列化接收 时,JVM 会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。
    达内javaSE_day12 学习笔记 —— IO流
    达内javaSE_day12 学习笔记 —— IO流
    eg:
    达内javaSE_day12 学习笔记 —— IO流
    达内javaSE_day12 学习笔记 —— IO流

2.7 文件字符输入输出流——FileReader和FileWriter

达内javaSE_day12 学习笔记 —— IO流

  • 练习
/**
 * FileReader和 FileWriter
 * @author Dell
 */
public class Demo3 {
	//练习:复制fw.txt内容到fw1.txt文件中
	public static void test3() throws IOException {
		//读
		File file = new File("fw.txt");
		if (!file.exists()) {
			file.createNewFile();
		}		
		FileReader fr = new FileReader(file);
		char[] buf = new char[(int) file.length()];
		fr.read(buf);	
		
		//写
		FileWriter fw = new FileWriter("fw1.txt");
		fw.write(buf);
		fw.close();
		fr.close();
	}
	public static void main(String[] args) throws IOException {
		test3();
	}
}

2.8 缓冲流——BufferedReader 和 BufferedWriter

  • BufferedReader:
    • readLine() 返回一行,如果返回值为null,说明文件内容读取完毕
  • BufferedWriter:换行时只能在字符串后面跟\n

达内javaSE_day12 学习笔记 —— IO流
达内javaSE_day12 学习笔记 —— IO流
达内javaSE_day12 学习笔记 —— IO流

2.9 打印流——PrintWriter

println() 换行
达内javaSE_day12 学习笔记 —— IO流
达内javaSE_day12 学习笔记 —— IO流

2.10 转换流——InputStreamReader和 OutputStreamWriter

达内javaSE_day12 学习笔记 —— IO流
达内javaSE_day12 学习笔记 —— IO流
达内javaSE_day12 学习笔记 —— IO流

2.11 RandomAccessFile类:输入流和输出流是一个流对象

对象声明:RandomAccessFile raf = newRandomAccessFile(File file, String mode);
其中参数 mode 的值可选 “r”:可读,“w” :可写,“rw”:可读性;

  • r :输入流
  • rw :既可以作为输入流,也可以作为输出流
    达内javaSE_day12 学习笔记 —— IO流

3. 线程

  • 程序:静态的代码
  • 进程:程序动态的执行过程
  • 线程:动态执行的过程,是进程内最小的执行单位,
    进程有直接独立的内存
    线程共享进程的资源,在进程内,每个线程可以完成独立的功能
    达内javaSE_day12 学习笔记 —— IO流
    eg: 线程之间实际上轮换执行
package cn.tedu.thread;

class T extends Thread{
	//线程完成的功能代码要写到线程体方法中,run()
	@Override
	public void run() {
		for (int i = 0; i <100; i++) {
			System.out.println("hello");
		}		
	}
}
class T2 extends Thread{
	//线程完成的功能代码要写到线程体方法中,run()
	@Override
	public void run() {
		for (int i = 0; i <100; i++) {
			System.out.println("Thread");
		}		
	}
}
public class MyThread {

	//主线程
	public static void main(String[] args) {
		T t1 = new T();
		T2 t2 = new T2();
		t1.start();
		t2.start();
	}
}

达内javaSE_day12 学习笔记 —— IO流

相关标签: javaSE实训笔记