IO流概念、FileWriter类及FileReader类详解

news2025/2/25 8:04:12

目录

IO流概述和分类

​编辑FileWriter写数据

FileWriter写数据的方法

FileWriter写数据常见问题

 FileReader读数据

IO流概述和分类

  • IO流用来处理设备之间的数据传输

        –文件复制,上传文件和下载文件

  • IO流分类

        –输出流——FileWriter

        –输入流——FileReader

图式详解:

输入流:读取文本内容,用显示器显示出来,利用,利用FileWriter来操作。

输出流:想要更新文本内容,往里边加一些内容,利用FileReader来操作。

FileWriter写数据

  • 构造方法

        –FileWriter(String fileName)

  • 成员方法

        –void write(String str)

        –void flush()——清缓冲

        –void close()——关闭文件

package com.demo01;

import java.io.FileWriter;
import java.io.IOException;

/**
 * 
 * @author 无限嚣张(菜菜)
 * 需求:从文件中写数据
 * 
 * FileWriter(String fileName):传递一个文件名称
 * 
 * 输出流写数据步骤:
 * 		A:创建输出流对象
 * 		B:调用输出流写数据的方法
 * 		C:释放资源
 *
 */
public class FileWriterDemo {
	public static void main(String[] args) throws IOException {
		//创建一个文件对象
		FileWriter fw = new FileWriter("c:\\zahng.txt");
		/*
		 * 创建输出流对象做了哪些事情:
		 * 		A:调用系统资源创建一个文件
		 * 		B:创建输出流对象
		 * 		C:把输出流对象指向文件
		 */
		
		//调用输出流对象的写数据的方法
		//写一个字符串数组
		fw.write("IO流你好,HELLO");
		//数据没有直接写到文件,其实写到了内存缓冲区
		fw.flush();
		
		//释放资源
		//ͨ通知系统释放和该文件相关的资源
		//关闭文件输出流
		fw.close();
		
	}
}

如果关闭以后:可以再写吗?执行fw.close()以后,不可以再写内容了。

FileWriter写数据的方法

  • void write(String str):写一个字符串数据
  • void write(String str,int index,int len):写一个字符串中的一部分数据
  • void write(int ch):写一个字符数据
  • void write(char[] chs):写一个字符数组
  • void write(char[] chs,int index,int len):写一个字符数组的一部分数据
package com.demo01;

import java.io.FileWriter;
import java.io.IOException;

/*
 * void write(String str):写一个字符串数据
 * void write(String str,int index,int len):写一个字符串中的一部分数据
 * void write(int ch):写一个字符数据
 * void write(char[] chs):写一个字符数组
 * void write(char[] chs,int index,int len):写一个字符数组的一部分数据
 */
public class FileWriterDemo3 {
	public static void main(String[] args) throws IOException {
		//创建一个文件对象
		FileWriter fw = new FileWriter("c://zy.txt");
		
		//void write(String str):写一个字符串数组
		fw.write("abcde");
		fw.write("\r\n");
		
		//void write(String str,int index,int len):写一个字符串中的一部分数据
		fw.write("abcde",0,5);
		fw.write("\r\n");
		fw.write("abcde",1,3);
		fw.write("\r\n");
		
		//void write(int ch):void write(int ch):写一个字符数据
		fw.write('a');
		fw.write(97);
		fw.write("\r\n");
		
		//void write(char[] chs):写一个字符数组
		char[] chs = {'a','b','c','d','e'};
		fw.write(chs);
		fw.write("\r\n");
		
		//void write(char[] chs,int index,int len):写一个字符数组的一部分数据
		fw.write(chs,0,5);
		fw.write("\r\n");
		fw.write(chs,2,3);
		fw.write("\r\n");
		//关闭文件
		fw.close();
	}
}

思考?????

FileWriter写数据常见问题

 1.如何实现数据的换行?

        windows:\r\n

        linux:\n

        mac:\r

 2.如何实现数据的追加写入?

        FileWriter fw = new FileWriter("c.text");

package com.demo01;

import java.io.FileWriter;
import java.io.IOException;


public class FileWriterDemo4 {
	public static void main(String[] args) throws IOException {
		//FileWriter fw = new FileWriter("c://c.txt"); 
		FileWriter fw = new FileWriter("c://c.txt",true); //表示追加输入,默认是false
		
		for(int x=0; x<10; x++) {
			fw.write("hello world"+x);
			fw.write("\r\n");
		}
		
		//关闭文件
		fw.close();
	}
}

 FileReader读数据

  • 构造方法

        –FileReader(String fileName)

  • 成员方法

        –int read()

        –int read(char[] cbuf)

没有参数的读取

package com.demo02;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/*
 * 需求:从文件中读数据并显示到控制台
 * 		读数据——输入流——FileReader
 * 
 * FileReader:
 * 		FileReader(String fileName):传递文件名称
 * 
 * 输入流读文件的步骤
 * 		A:创建输入流对象
 * 		B:调用输入流对象读数据的方法
 * 		C:释放资源
 * 
 * java.io.FileNotFoundException: fr.txt (系统不指定文件)
 */
public class FileReaderDemo {
	public static void main(String[] args) throws IOException {
		//创建输入流对象
		FileReader fr = new FileReader("c://zy.txt");

		int ch;
		while ((ch = fr.read()) != -1) {
			System.out.print((char) ch);
		}

		//释放
		fr.close();
	}
}

 带参数的数据读取

package com.demo02;

import java.io.FileReader;
import java.io.IOException;

/*
 * 输入流读数据的步骤
 * 		A:创建输入流对象
 * 		B:调用输入流对象的读数据的方法
 * 		C:释放资源
 */
public class FileReaderDemo2 {
	public static void main(String[] args) throws IOException {

		// 创建文件数据对象
		FileReader fr = new FileReader("c://zy.txt");
		
	
		char[] chs = new char[1024]; //创建数组对象
		int len;
		//1:fr.read(chs)
		//2:len=fr.read(chs)
		//3:len != -1
		while((len=fr.read(chs))!=-1) {
			//System.out.println(new String(chs,0,len));
			System.out.print(new String(chs,0,len));
		}
		
		//释放数据
		fr.close();
	}
}

 

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

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

相关文章

< 每日算法 - Javascript解析: 交通枢纽 >

每日算法 - JavaScript解析&#xff1a;交通枢纽一、任务描述&#xff1a;》 示例一&#xff1a;》示例二二、题意解析拓展知识三、解决方案&#xff1a;往期内容 &#x1f4a8;一、任务描述&#xff1a; 为了缓解「力扣嘉年华」期间的人流压力&#xff0c;组委会在活动期间开…

谷歌优化排名怎么做?Google SEO怎么优化?

本文主要分享关于Google自然排名优化中的一些方法和技巧&#xff0c;让你更快的做好谷歌排名。 本文由光算创作&#xff0c;有可能会被修改和剽窃&#xff0c;我们佛系对待这种行为吧。 谷歌优化排名怎么做&#xff1f;Google SEO怎么优化&#xff1f; 答案是&#xff1a;创…

CMOS器件与TTL器件CMOS电平与TTL电平

常用的数字芯片&#xff0c;按制造工艺主要分为TTL器件和CMOS器件。TTL器件是指其内部主要逻辑单元为双极性晶体管&#xff0c;CMOS器件是指其内部的主要逻辑单元为MOS管。现在绝大部分数字芯片使用的工艺都是CMOS工艺&#xff0c;在一些比较老的74系列芯片中还使用的是TTL工艺…

51单片机最强模块化封装(1)

文章目录前言一、sys文件创建和路径添加1.创建文件夹添加文件夹路径二、sys文件编写1.sys.h2.sys.c三、模块化的测试总结前言 今天将为大家讲解51单片机的模块化封装&#xff0c;为什么要讲这个模块化封装呢&#xff1f;模块化封装将提高我们代码的可移植性和可复用性&#xf…

力扣刷题记录——1002. 查找共用字符、905. 按奇偶排序数组、 977. 有序数组的平方

本专栏主要记录力扣的刷题记录&#xff0c;备战蓝桥杯&#xff0c;供复盘和优化算法使用&#xff0c;也希望给大家带来帮助&#xff0c;博主是算法小白&#xff0c;希望各位大佬不要见笑&#xff0c;今天要分享的是——《力扣刷题记录——1002. 查找共用字符、905. 按奇偶排序数…

服务器被ddos攻击的处置策略

如果您的服务器遭到了DDoS攻击&#xff0c;以下是一些可以采取的措施&#xff1a;使用防火墙和安全组进行限制&#xff1a;限制服务器的流量以防止进一步的攻击。升级服务器资源&#xff1a;为了应对更高的流量&#xff0c;可以升级服务器的内存&#xff0c;处理器等资源。安装…

GraspNet-1Billion

目录 .1 intro .2 Dataset 2.1 data collection&#xff1a; 2.2 data annotation 2.3 evaluation .3 backbone 3.1 Training and Inference 3.2 Experiment References .1 intro contribution: 一个具有统一评价体系的大规模抓取姿态检测数据集 评估系统通过解析计…

顶会论文 | 虚拟网络探测技术的探索与实践

作者&#xff1a;吕彪 阿里云网络齐天负责人 云网络由物理网络和虚拟网络共同组成&#xff0c;两者都会影响网络性能。过去的研究主要集中于解决物理网络探测&#xff0c;而在虚拟网络探测领域的相应研究则较少。本文将为大家分享一种专为大规模多租户虚拟网络设计的主动探测系…

SAP进阶技术分享一:ABAP增强(1)

一&#xff1a;基于源代码的增强 1.定义 源代码增强以子程序形式发布&#xff0c;可以用PERFORM调用这些子程序&#xff0c;发布的时候是空的&#xff0c;提供一个空代码的子过程&#xff0c;用户可以添加自己的代码。 2.特点 需要修改sap的标准代码。   屏幕增强以客户屏幕…

opencv轮廓相关函数

查找轮廓contours, hierarchy cv2.findContours(image,mode,method)参数&#xff1a;image&#xff1a;寻找轮廓所使用的图像。&#xff08;寻找过程不修改此图像&#xff09;mode&#xff1a;模式。cv2.RETR_EXTERNAL只检测外轮廓&#xff1b;cv2.RETR_LIST检测的轮廓不建立等…

【Qt】10.Linux下,Qt连接云MySQL数据库

目录 下载MySQL压缩包 配置MySQL Qt下编译MySQL 测试 下载MySQL压缩包 网址&#xff1a; MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/ 我为了跟云服务器上的MySQL版本一致&#xff0c;减少不必要的麻…

带你手撕排序算法

文章目录前言一、排序的相关概念二、插入排序1.直接插入&#xff08;1&#xff09;算法思想&#xff08;2&#xff09;算法讲解&#xff08;3&#xff09;代码及解析&#xff08;4&#xff09;代码总结2.希尔排序( 缩小增量排序 )&#xff08;1&#xff09;算法思想&#xff08…

maxcomputer的分区表相关操作

– 查看xsxw(学生行为表定义) desc xsxw; – 查看xsxw1(学生行为表定义) desc xsxw1; – 上面的两张表是通过ddl语句创建的分区表 – 创建ddl语句如下 – CREATE TABLE IF NOT EXISTS xsxw1( – xwsj STRING COMMENT ‘行为时间’, – xh STRING COMMENT ‘学号’, – xwdd ST…

基于OptiSystem的LD\LED\EDFA仿真分析

1、客户需求&#xff1a; &#xff08;1&#xff09; 仿真LD、LED直接调制系统的输出光谱&#xff0c;观察系统输出性能。 &#xff08;2&#xff09; 采用EDFA的光纤通信系统&#xff0c;实现对多路光波信号的放大&#xff0c;实现200km、40Gbit/s的传输。用仿真软件搭建一个…

关系数据库——关系代数

文章目录一、传统的集合运算二、专门的关系运算1.选择&#xff08;restriction&#xff09;2.投影&#xff08;Projection&#xff09;3.连接&#xff08;join&#xff09;1&#xff09;等值连接2&#xff09;自然连接4.除&#xff08;Division&#xff09;一、传统的集合运算 …

《深入浅出计算机组成原理》学习笔记 Day17

冒险和预测&#xff08;一&#xff09;1. 结构冒险2. 数据冒险参考1. 结构冒险 结构冒险本质上是一个硬件层面的资源竞争问题&#xff0c;也就是一个硬件电路层面的问题。 CPU 在同一个时钟周期内&#xff0c;同时在运行两条计算机指令的不同阶段&#xff0c;但这两个不同阶段…

Github消息推送到Telegram,并使用Vercel部署

Github buibuibui Telegram 仓库地址&#xff1a;https://github.com/yesmore/gh-buibuibui-tg 借助 Github 的 Webhooks、Vercel’s Serverless API 和 Telegram Bot&#xff0c;连接 Github 和 Telegram&#xff0c;在 Telegram chat 中接收仓库的消息。 效果&#xff1a;你…

深入分析ConcurrentHashMap1.8的扩容实现

什么情况会触发扩容 当往hashMap中成功插入一个key/value节点时&#xff0c;有可能触发扩容动作&#xff1a; 1、如果新增节点之后&#xff0c;所在链表的元素个数达到了阈值 8&#xff0c;则会调用treeifyBin方法把链表转换成红黑树&#xff0c;不过在结构转换之前&#xff0…

做跨境电商日本市场,如何才能让客户满意?

跨境电商作为互联网技术的产物&#xff0c;现如今早就风靡全世界。我国跨境电商行业的发展起步时间比较晚&#xff0c;但在各方力量的加持下&#xff0c;行业的发展日趋完善&#xff0c;行业对国内经济的带动作用也更加明显。当下许多国潮品牌在Starday等跨境电商服务平台的支持…

如何选择研发效能管理平台?好用的研发效能管理平台有哪些

本文将对比介绍8款比较知名的效能度量管理平台&#xff1a;1.PingCode&#xff1b;2.思码逸&#xff1b;3.云效&#xff1b;4.金山云&#xff1b;5.Git&#xff1b;6.Jenkins&#xff1b;7.Bamboo&#xff1b;8.Docker。但在对比研发效能平台之前&#xff0c;我们先来聊一些研发…