java学习(三):IO流

系列文章目录

文章目录

  • 系列文章目录
  • 一、学习总结
  • 二、部分代码


一、学习总结

  1. IO流概览

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-11MLpicr-1690733294478)(src/main/resources/img.png)]

  1. IO流操作的步骤:

1.创建输入 或者 输出的文件对象
2.创建输入流 输出流
3.具体的读写操作
4.关闭流

3.注意点

1.关闭流
2.写文件有一个参数控制是覆盖还是追加 FileWriter(file,true) --true参数控制
3.字符流操作只能处理文本文件;字节流操作处理非文本文件 和 文本的复制操作

  1. 缓冲流 转换流 对象流

二、部分代码

package com.zy.learnio;import org.junit.Test;
import java.io.*;public class LearnIoTest {@Testpublic void testFileRead() throws IOException {/*** 1. 创建读取/写入的File类对象* 2. 创建输入流 输出流* 3. 具体操作:读取文件内容:方式1:按单个字符读取; 方式2. 按照字符数组读取* 4. 关流*/FileReader fr = null;try {File file = new File("hello.txt");fr = new FileReader(file);int data;// 方式1:单个字符读取
//            while ((data = fr.read()) != -1) {
//                System.out.println((char) data);
//            }// 方式2: 按照字符数组读取char[] buff = new char[5];int len = fr.read(buff);while (len != -1) {for (int i = 0; i < len; i++) {System.out.println((char) buff[i]);}len = fr.read(buff);}} catch (Exception e) {e.printStackTrace();} finally {if (fr != null) {fr.close();}}}@Testpublic void testFileWrite() throws IOException {String s = "hello world test";File file = new File("hWrite.txt");FileWriter fw = null;try {fw = new FileWriter(file);// 方式1: 按照单个字符写
//            for (int i = 0; i < s.length(); i++) {
//                fw.write(s.charAt(i));
//            }// 方式2:按照字符数组写/ 直接写入字符串char[] cBuff = new char[5];char[] chars = s.toCharArray();fw.write(s);} catch (IOException e) {e.printStackTrace();} finally {if (fw != null) {fw.close();}}}@Testpublic void testFileInputStream() {File file = new File("hello.txt");FileInputStream fIn = null;try {fIn = new FileInputStream(file);int read = fIn.read();while (read != -1) {System.out.println((char) read);read = fIn.read();}} catch (IOException e) {e.printStackTrace();} finally {if (fIn != null) {try {fIn.close();} catch (IOException e) {e.printStackTrace();}}}}@Testpublic void testFileOutputStream() {File file = new File("hOutputStream.txt");FileOutputStream fo = null;try {fo = new FileOutputStream(file);byte[] bytes = "test 123".getBytes();fo.write(bytes);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (fo != null) {try {fo.close();} catch (IOException e) {e.printStackTrace();}}}}@Testpublic void testFileInputStreamAndFileOutputStream() {File srcFile = new File("img.png");File dstFile = new File("outTest.jpg");FileInputStream fi = null;FileOutputStream fo = null;try {fi = new FileInputStream(srcFile);fo = new FileOutputStream(dstFile);byte[] bytes = new byte[1024];int len;while ((len = fi.read(bytes)) != -1) {fo.write(bytes, 0, len);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (fi != null) {try {fi.close();} catch (IOException e) {e.printStackTrace();}}if (fo != null) {try {fo.close();} catch (IOException e) {e.printStackTrace();}}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git远程一个分支对应本地两个分支推送

git远程一个分支对应本地两个分支推送 你可以使用以下命令将两个本地分支推送到远程仓库中的一个远程分支&#xff1a; 首先&#xff0c;将第一个本地分支推送到远程仓库&#xff1a; git push <远程仓库名称> <本地分支名称>:<远程分支名称>例如&#xff…

页面生成图片或PDF node-egg

没有特别的幸运&#xff0c;那么就特别的努力&#xff01;&#xff01;&#xff01; 中间件&#xff1a;页面生成图片 node-egg 涉及到技术node egg Puppeteer 解决文书智能生成多样化先看效果环境准备初始化项目 目录结构核心代码 完整代码https://gitee.com/hammer1010_ad…

【python】可指定时间播放音频噪声

【诉求】 A是一段音频&#xff0c;它有个长度是9秒&#xff0c;A_2就是播放A段音频的前2s。传入播放的时间time&#xff0c;效果是播放对应时常的音频。抽象出来&#xff1a;time 输出音频的种类对应的长度 str audioList [A,B,C] Int audioLength [9,9,10] All_audio_Lengt…

node 菜单权限判断

对于那些在界面上没显示的菜单在后台路由中也是要检查下权限的&#xff0c;要不然像用户管理/userList这条路由虽然没有配给某个测试账号&#xff0c;但他可以直接在地址栏输入/userList进行访问。所以在Middleware中需要增加判断用户是否有此page_url的访问权限。 /** 需要用…

Linux - 添加普通用户为信任用户

1.添加用户 在Linux系统中&#xff0c;可以使用以下步骤添加用户&#xff1a; 打开终端并以root用户身份登录 输入以下命令以创建新用户&#xff08;请将username替换为您想要创建的用户名&#xff09;&#xff1a; adduser username 设置该用户的密码&#xff0c;使用以下命…

深蓝学院C++基础与深度解析笔记 第14章 元编程

1. 元编程的引入 ● 从泛型编程到元编程 – 泛型编程 使用一套代码处理不同类型 —— – 对于一些特殊的类型需要引入额外的处理逻辑 —— 引入操纵程序的程序 – 元编程与编译期计算&#xff08;优选编译期计算&#xff09; – std::vector<int>不同&#xff0c;因为…

在windows上安装minio

1、下载windows版的minio&#xff1a; https://dl.min.io/server/minio/release/windows-amd64/minio.exe 2、在指定位置创建一个名为minio文件夹&#xff0c;然后再把下载好的文件丢进去&#xff1a; 3、右键打开命令行窗口&#xff0c;然后执行如下命令&#xff1a;(在minio.…

在CentOS下安装docker

1&#xff09;在Cent OS安装docker先有一个Cent OS 7.6系统 这个很重要&#xff0c;不同版本按照的时候是不一样的。 2&#xff09;查看CentOS版本 cat /etc/redhat-releas 3&#xff09;用root账户登录进去配置国内yum源 wget -O /etc/yum.repos.d/CentOS-Base.repo http:…

C++中enum和enum class的区别

C中enum和enum class的区别 1.作用域不同2. 默认类型不同3.类型安全程度不同 在C中&#xff0c;enum和enum class都是用来定义枚举类型的关键字&#xff0c;但它们有几个区别。 1.作用域不同 enum的枚举成员的作用域在定义的枚举类型中是共享的&#xff0c;而enum class的每个枚…

浅谈进程调度

要想了解进程调度&#xff0c;我们首先得知道什么是进程&#xff0c;那么什么是进程呢&#xff1f;其实进程就是正在运行的程序&#xff0c;如此说来&#xff0c;是不是就认为一个程序只能有一个进程&#xff0c;其实不然&#xff0c;同一个程序运行多次可能会出现多个进程。如…

移动硬盘不显示怎么办?正确解决方式看这里!

移动硬盘为存储带来了很大的方便&#xff0c;在对数据存储时&#xff0c;可做到即插即用&#xff0c;且其体积小、容量大&#xff0c;且比较安全可靠。但在实际的使用中&#xff0c;也会出现各种问题。请看下面2个常见案例。 案例1&#xff1a;“各位朋友&#xff0c;我新买了一…

iTOP-RK3568开发板Windows 安装 RKTool 驱动

在烧写镜像之前首先需要安装 RKTool 驱动。 RKTool 驱动在网盘资料“iTOP-3568 开发板\01_【iTOP-RK3568 开发板】基础资料 \02_iTOP-RK3568 开发板烧写工具及驱动”路径下。 驱动如下图所示&#xff1a; 解压缩后&#xff0c;进入文件夹&#xff0c;如下图所示&#xff1a;…

Ant Design Pro 封装网络请求

可以直接在antdPro项目的app.tsx文件中对request进行运行时配置&#xff0c;并且该配置会直接透传到umi-request的全局配置。后续直接从umi中引入request或者useRequest直接使用&#xff0c;可以说是非常方便。文档可查看&#xff1a;umi.js 具体配置代码&#xff1a; import…

Android Calendar

1.字符串日期比较大小 public static boolean compareDate(String pre, String last) {SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd");try {Date lastDate sdf.parse(last);Calendar lastCal Calendar.getInstance();lastCal.setTime(lastDate);Date …

Python爬虫Scrapy(二)_入门案例

入门案例 学习目标 创建一个Scrapy项目定义提取的结构化数据(Item)编写爬取网站的Spider并提取出结构化数据(Item)编写Item Pipelines来存储提取到的Item(即结构化数据) 一、新建项目(scrapy startproject) 在开始爬取之前&#xff0c;必须创建一个新的Scrapy项目。进入自定…

Django系列之Channels

1. Channels 介绍 Django 中的 HTTP 请求是建立在请求和响应的简单概念之上的。浏览器发出请求&#xff0c;Django服务调用相应的视图函数&#xff0c;并返回响应内容给浏览器渲染。但是没有办法做到 服务器主动推送消息给浏览器。 因此&#xff0c;WebSocket 就应运而生了。…

深入理解设计模式之门面模式

深入理解设计模式之门面模式 什么是门面模式&#xff1f; 门面模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供了一个简单的接口&#xff0c;用于访问复杂子系统中的一组接口。门面模式通过封装子系统的复杂性&#xff0c;提供了一个更简…

809协议服务端程序解码程序

809协议服务端程序解码程序 目录概述需求&#xff1a; 设计思路实现思路分析1.服务端2.code: 拓展实现性能参数测试&#xff1a;1.功能测试 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip…

easyui主表子表维护页面

easyui主表子表维护页面 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Title</title><!-- <#include "common.html"/> --><link rel"stylesheet" type&quo…

释放三年版本:Aspose.Total For NET [21.7/22.7/23.7]

请各位对号入座&#xff0c;选择自己需求范围&#xff0c;你懂的&#xff0c;你懂的&#xff0c;你懂的 Aspose.Total for .NET is the most complete package of all .NET File Format Automation APIs offered by Aspose. It empowers developers to create, edit, render, …