IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java常用工具类(六)——输入输出流 -> 正文阅读

[Java知识库]Java常用工具类(六)——输入输出流

一、File类的应用

  • 什么是文件: 文件可认为是相关记录或放在一起的数据集合
  • 在Java在中,使用java.io.File类对文件进行操作
package com.csdn.file;

import java.io.File;
import java.io.IOException;

public class FileDemo {

	public static void main(String[] args) {
		File file1 = new File("/Users/***/Desktop/study", "test.txt");
		// 判断目录文件
		System.out.println("file1 是否为目录: " + file1.isDirectory());
		System.out.println("file1 是否为文件: " + file1.isFile());
		// 创建目录
		File file2 = new File("/Users/***/Desktop/study", "test");
		if (!file2.exists()) {
			file2.mkdir();
		}
		
		// 创建多层级目录
		File file3 = new File("/Users/***/Desktop/study", "test/test");
		if (!file3.exists()) {
			file3.mkdirs();
		}
		
		// 创建文件
		try {
			file1.createNewFile();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
  • 绝对路径和相对路径
    • 绝对路径:是从盘符开始的路径
    • 相对路径:是从当前路径开始的路径
package com.csdn.file;

import java.io.File;
import java.io.IOException;

public class FileDemo2 {

	public static void main(String[] args) {
		// 相对路径和绝对路径
		File file1 = new File("thread.txt");
		try {
			file1.createNewFile();
			// 判断是否为绝对路径
			System.out.println(file1.isAbsolute());
			// 获取相对路径
			System.out.println(file1.getPath());
			// 获取绝对路径
			System.out.println(file1.getAbsolutePath());
			// 获取文件名
			System.out.println(file1.getName());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

二、字节流

1、字节输入流InputStream

  • FileInputStream
    • 从文件系统中的某个文件中获得输入字节
    • 用于读取诸如图像数据之类的原始字节流
  • FileInputStream常用方法

数据读取Demo1

package com.csdn.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileDemo3 {

	public static void main(String[] args) {
		try {
			FileInputStream f = new FileInputStream("speech.txt");
			int count = 0;
			int n;
			while ((n = f.read()) != -1) {
				System.out.print((char) n);
				count ++;
			}
			System.out.println();
			System.out.print("一共有" + count + "字节");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}	
	}
}

数据读取Demo2

package com.csdn.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileDemo4 {

	public static void main(String[] args) {
		try {
			FileInputStream f = new FileInputStream("speech.txt");
			byte[] b = new byte[100];
			f.read(b);
			System.out.print(new String(b));
			System.out.println();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
}

2、字节输出流OutputStream

  • FileOutputStream常用方法

package com.csdn.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputDemo {

	public static void main(String[] args) {
		FileOutputStream fos;
		FileInputStream fis;
		
		try {
			fos = new FileOutputStream("speech.txt");
			fis = new FileInputStream("speech.txt");
			
			fos.write(50);
			fos.write('a');
			
			System.out.println(fis.read());
			System.out.println((char)fis.read());
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

3、缓冲流

  • 缓冲输入流 BufferedInputStream
  • 缓冲输出流 BufferedOutputStream
package com.csdn.file;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferedDemo {

	public static void main(String[] args) {
		try {
			FileInputStream fis = new FileInputStream("speech.txt");
			BufferedInputStream bis = new BufferedInputStream(fis);
			FileOutputStream fos = new FileOutputStream("speech.txt");
			BufferedOutputStream bos = new BufferedOutputStream(fos);
			
			bos.write(50);
			bos.write('a');
			// 清空缓冲流 写入文件
			bos.flush();
			
			System.out.println(bis.read());
			System.out.println((char)bis.read());
			
			// 关闭文件
			bos.close();
			fos.close();
			fis.close();
			bis.close();
			
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e){
			e.printStackTrace();
		}
	}
}

缓冲流与普通写入对比, 时间相差60倍, 缓冲流更快

package com.csdn.file;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BufferedDemo2 {

	public static void main(String[] args) {
		try {
			FileOutputStream fos = new FileOutputStream("one.txt");
			long startTime = System.currentTimeMillis();
			for (int i = 0; i < 10000; i++) {
				fos.write(i);
			}
			long endTime = System.currentTimeMillis();
			
			System.out.println("FileOutputStream 耗时: " + (endTime - startTime));
			
			FileOutputStream fos2 = new FileOutputStream("two.txt");
			BufferedOutputStream bos = new BufferedOutputStream(fos2);
			long startTime2 = System.currentTimeMillis();
			for (int i = 0; i < 10000; i++) {
				bos.write(i);
			}
			bos.flush();
			long endTime2 = System.currentTimeMillis();
			System.out.println("BufferedOutputStream 耗时: " + (endTime2 - startTime2));
			
			fos.close();
			fos2.close();
			bos.close();
			
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e){
			e.printStackTrace();
		}
	}
}

三、字符流

1、字符输入流Reader

2、字符输出流Writer

3、字节字符转换流

  • InputStremReader
  • OutputStreamWriter

案例:

package com.csdn.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class ReaderDemo {

	public static void main(String[] args) {
		try {
			FileInputStream fis = new FileInputStream("speech.txt");
			InputStreamReader isr = new InputStreamReader(fis);
			FileOutputStream fos = new FileOutputStream("speech1.txt");
			OutputStreamWriter osw = new OutputStreamWriter(fos);
			int n = 0;
			char[] cbuf = new char[10];
			
			while((n=isr.read(cbuf)) != -1) {
//				String s = new String(cbuf, 0 ,n);
				osw.write(cbuf, 0, n);
				osw.flush();
			}
			
			fis.close();
			isr.close();
			fos.close();
			osw.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

四、对象序列化与反序列化

1、步骤

  • 创建一个类,继承Serializable接口
  • 创建对象
  • 将对象写入文件
  • 从文件读取对象信息

2、类

  • 对象输入流ObjectInputStream
  • 对象输出流ObjectOutputStream

3、对象序列化

  • 序列化: 把Java对象转换成字节序列的过程
  • 反序列化:把字节序列回复为Java对象的过程

?

?

??坐得住板凳,耐得住寂寞,守得住初心!??

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:13:47  更:2021-08-21 15:16:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 0:55:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码