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

相关文章

C# string转unicode字符的实现

《C#string转unicode字符的实现》本文主要介绍了C#string转unicode字符的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录1. 获取字符串中每个字符的 Unicode 值示例代码:输出:2. 将 Unicode 值格式化

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt