IO 字符流 FileWriter IO异常的处理 字符数据续写 FileReader 复制原理:

本文主要是介绍IO 字符流 FileWriter IO异常的处理 字符数据续写 FileReader 复制原理:,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IO

用于处理设备之间的数据传输

流按流向分输入流  和  输出流

流按操作数据分类 字节流  和 字符流

字节流的抽象基类

InputStreamOutputStream

字符流的抽象基类

Reader Writer


字符流的特点
既然IO流是用来操作数据的,
那么数据的最常见体现形式是:文件。

writer
那么先以操作文件为主,
需求,在硬盘上,创建一个文件并写入一些文字数据。
找到一个专门用于操作文件的Writer子类对象,FileWriter。

后缀名师父类名,前缀名是该类对象的功能。
FileWrite 创建文件   
write 往文件内写字符

flush 刷新

close 关闭流资源
close和flush区别

flush刷新后,流可以继续使用

close刷新后,会将流关闭。

FileWriter fw = new FileWriter("hello.txt");

import java.io.*;
class Test
{public static void main(String[] args)	throws IOException {//创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。//而且该文件会被创建到指定目录下,如果该目录下已有同名文件,将被覆盖。//其实该步就是在明确数据要存放的目的地。	  FileWriter fw = new FileWriter("demo.txt");//调用write方法,将字符串写入流中。fw.write("123333333333");//刷新流对象中的缓冲中的数据//将数据刷到目的地中fw.flush();//关闭流资源,关闭之前,会刷新一次内部的缓冲数据。//将数据刷到目的地中。//和flush区别,flush刷新后,流可以继续使用,close刷新后,会将流关闭。fw.close();}public static void sop( Object obj){System.out.println(obj);}
}
IO异常的处理方式

import java.io.*;
class Test
{public static void main(String[] args){FileWriter f=null;try{f = new FileWriter("demo.txt");f.write("213123123213");}catch (IOException e){sop(e.toString());}finally{try{if (f!=null)f.close();	}catch (IOException e){}}}public static void sop( Object obj){System.out.println(obj);}
}

对已有文件的数据续写

加true,当文件存在时,在文件尾部添加内容。

当文件不存在时,创建文件,在头部添加内容。

FileWriter fw = new FileWriter("hello.txt",true);

import java.io.*;
class Test
{public static void main(String[] args){//传递一个true函数,代表不覆盖已有文件。并在已有文件的末尾处,进行数据续写。FileWriter fw = null;try{fw=new FileWriter("demo.txt",true);fw.write("12312\r\n3123");}catch (IOException e){sop(e.toString());}finally{try{if(fw!=null)fw.close();}catch (IOException e){}}		}public static void sop( Object obj){System.out.println(obj);}
}
Reader

方法1和方法2

当read()字符读取完字符时,返回-1;

fr.read(char[])返回的是读到的字符个数。

import java.io.*;
class Test
{public static void main(String[] args) throws IOException{//创建一个文件读取流对象,和指定名称的文件相关联。//要保证该文件是已经存在的,如果不存在,会发生异常FileNotFountException//方法一,调用读取流对象的read方法。//read();一次读一个字符,而且会自动往下读。FileReader fr = new FileReader("demo.txt");int ch=0;while ((ch=fr.read())!=-1){sop((char)ch);}fr.close();
////方法二,通过字符数组进行读取。//定义一个字符数组,用于存储读到的字符//该read(char[])返回的是读到字符个数。FileReader fr2 = new FileReader("demo.txt");char [] buf = new char[1024]; //一般设为1024int num=0;while ((num=fr2.read(buf))!=-1){sop(num+"--"+new String(buf,0,num));}fr2.close();}public static void sop( Object obj){System.out.println(obj);}
}

练习读取打印

/*
练习
读取一个.java文件,并打印在控制台上。
如果用第二种打法,尽量不要用ln换行。。。
*/	
import java.io.*;
class Test
{public static void main(String[] args) throws IOException{FileReader fr = new FileReader("1.java");char [] buf = new char[1024];int num=0;while ((num=fr.read(buf))!=-1){sop(new String(buf,0,num));}fr.close();}public static void sop( Object obj){System.out.println(obj);}
}

将c盘一个文本文件复制到d盘
复制原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中

步骤
1在D盘创建一个文件,用于存储C盘文件中的数据。
2定义读取流和C盘文件关联
3通过不断的读写完成数据存储
4关闭资源

/*
将c盘一个文本文件复制到d盘复制原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中步骤
1在D盘创建一个文件,用于存储C盘文件中的数据。
2定义读取流和C盘文件关联
3通过不断的读写完成数据存储
4关闭资源
*/	
import java.io.*;
class Test
{public static void main(String[] args) throws IOException{copy1();copy2();}//从C盘都一个字符,就往D盘写一个字符public static void copy1()throws IOException{//创建目的地FileWriter fw = new FileWriter("hello.java");//与已有文件关联FileReader fr = new FileReader("1.java");int ch = 0;while ((ch=fr.read())!=-1){fw.write(ch);}fw.close();fr.close();}//第二种方式public static void copy2() {FileWriter fw = null;FileReader fr = null;	try{fw = new FileWriter("hello2.java");fr = new FileReader("2.java");char [] buf = new char[1024];int len = 0 ;while ((len=fr.read(buf))!=-1){fw.write(buf,0,len);}}catch (IOException e){throw new RuntimeException("读写失败");}finally{if (fw!=null)try{fw.close();}catch (IOException e ){}if (fr!=null)try{fr.close();}catch (IOException e ){}}}public static void sop( Object obj){System.out.println(obj);}
}

这篇关于IO 字符流 FileWriter IO异常的处理 字符数据续写 FileReader 复制原理:的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/972087

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和