IO 总结

1. 字节流

2. 字符流

IO流总览

字节输入流

字节输出流

字符输入流

字符输出流

其他流

案例一 集合到文件

将一个ArrayList集合中的字符串数据写入到文本文件,要求:每个字符串元素作为文件中的一行数据

// 数组

ArrayList list = new ArrayList<>();

list.add("hello");

list.add("world");

list.add("java");

list.add("中国");

list.add("上海");

list.add("北京");

list.add("hello");

list.add("home,my home.");

list.add("我爱你,中国。");

// 字符流 写

BufferedWriter writer = new BufferedWriter(new FileWriter("myCharStream/fo.txt"));

for(String s: list) {

writer.write(s);

writer.newLine(); //换行

writer.flush();

/*

writer.flush();

字符流必须写,因为文章可能很长,超出buffer,数据可能出问题

字节流可写可不写,因为底层有做特殊的操作

特殊的,

如果在未flush或者close前重新new BufferedWriter()就会把原来的缓冲区覆盖。

*/

}

writer.close();

案例二 文件到集合

// 创建存储器

ArrayList list = new ArrayList<>();

// 创建缓存流,字符流 读

BufferedReader reader = new BufferedReader(new FileReader("myCharStream/fo.txt"));

// 读

String s;

while ((s = reader.readLine()) != null) {

list.add(s);

}

System.out.println(list);

reader.close();

案例三 点名器

我有一个文件里面存储了班级同学的姓名,每一个姓名占一行,要求通过程序实现随点名器

// 存储器

ArrayList list = new ArrayList<>();

// 缓冲流 字符流 读

BufferedReader reader = new BufferedReader(new FileReader("myCharStream/fo.txt"));

String s;

while ((s = reader.readLine()) != null) {

list.add(s);

}

reader.close();

// 随机选一个

Random r = new Random();

int k = r.nextInt(list.size());

System.out.println(list.get(k));

案例四 学生数据写入到文本文件

把ArrayList集合中的学生数据写入到文本文件。要求:每一个学生对象的数据作为文件中的一行数据

格式:学号,姓名,年龄,居住地举例:itheima001,林青霞,30,西安

// 创建数据

ArrayList list = new ArrayList<>();

// 写数据

BufferedWriter writer = new BufferedWriter(new FileWriter("myCharStream/fo.txt"));

// 填充数据

list.add(new Student("001","张三",12,"广东"));

list.add(new Student("002","李四",10,"上海"));

list.add(new Student("003","王五",8,"北京"));

list.add(new Student("004","赵柳",7,"深圳"));

list.add(new Student("005","张丽颖",9,"郑州"));

list.add(new Student("006","王昭君",5,"西安"));

list.add(new Student("007","张飞",18,"成都"));

list.add(new Student("008","赵云",81,"云南"));

for (Student s: list) {

// 编辑内容

String content = s.getSid() + "," + s.getName() + "," + s.getAge() + "," + s.getAddress();

// 写

writer.write(content);

writer.newLine(); // 换行

writer.flush(); // 刷新

}

// 关闭

writer.close();

案例五 文件到数组

需求:把文本文件中的数据读取到集合中,并遍历集合。要求:文件中每一行数据是一个学生对象的成员变量值

举例:itheima001,林青霞,30,西安

// 创建接收的集合

ArrayList list = new ArrayList<>();

// 读

BufferedReader reader = new BufferedReader(new FileReader("myCharStream/fo.txt"));

String s;

while ((s = reader.readLine()) != null) {

// 将字符串切为数组

String[] tmp = s.split(",");

if (tmp.length == 4){

// 创建对象,并存到list中

String sid = tmp[0];

String name = tmp[1];

int age = Integer.parseInt(tmp[2]);

String address = tmp[3];

Student stu = new Student(sid, name, age, address);

list.add(stu);

} else {

System.out.println("数据错误!!!");

System.out.println(s);

System.out.println("--------");

}

}

// 关闭

reader.close();

// 遍历

for (Student stu: list) {

System.out.println(stu);

}

案例六

键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)。要求按照成绩总分从高到低写入文本文件

格式:姓名,语文成绩,数学成绩,英语成绩举例:林青霞,98,99,100

思路:

1:定义学生类

2:创建TreeSet集合,通过比较器排序进行排序

3:键盘录入学生数据

4:创建学生对象,把键盘录入的数据对应赋值给学生对象的成员变量

5:把学生对象添加到TreeSet集合

6:创建字符缓冲输出流对象

7:遍历集合,得到每一个学生对象

8:把学生对象的数据拼接成指定格式的字符串

9:调用字符缓冲输出流对象的方法写数据

10:释放资源

案例七

// 在当前模块目录下,有一个“maths.txt”文件,其中的文本内容如下:

// 5+5

// 10-5

// 2*3

// 20/4

// ...

// 每行一个算术表达式,每个式子都是使用加减乘除符号连接的两个数字,没有其他数据。 请编写程序将每个式子的结果计算出来,再写回这个文件中。程序执行后,文件中的内容为:

// 5+5=10

// 10-5=5

// 2*3=6

// 20/4=5

// ...

import java.io.*;

import java.time.Instant;

import java.util.ArrayList;

public class IODemo {

public static void main(String[] args) throws IOException {

// 源数据 目标路径

String fileName = "/Users/thor/Desktop/maths.txt";

// 创建源数据

createdTXT(fileName);

// 生成答案数据

String fileName_answer = "/Users/thor/Desktop/maths_answer.txt";

txt_answer(fileName_answer, fileName);

}

// 读、计算、写

public static void txt_answer(String fileName, String srcFileName) throws IOException {

// 读数据

BufferedReader reader = new BufferedReader(new FileReader(srcFileName));

// 写数据

BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));

// 读写

String s;

while ((s = reader.readLine()) != null) {

// 解析

String reslut = analysisData(s);

// 写

writer.write(reslut);

writer.newLine();

writer.flush();

}

// 关闭

writer.close();

}

// 分析数据

public static String analysisData(String s) {

String[] arr = s.split("[-+*/%]");

// 屏蔽错误 - 运算符个数不为 1

if (arr.length != 2) {

return "内容不合法:" + s;

}

// 屏蔽错误 - 运算符两边不为数字

int fir = 0;

int sec = 0;

try {

fir = Integer.parseInt(arr[0]);

sec = Integer.parseInt(arr[1]);

} catch (NumberFormatException e) {

return "内容不合法:" + s;

}

// 计算

int result = 0;

if (s.contains("+")) { // +

result = fir + sec;

} else if (s.contains("-")) { // -

result = fir - sec;

} else if (s.contains("*")) { // *

result = fir * sec;

} else if (s.contains("/")) { // /

result = fir / sec;

} else if (s.contains("%")) { // %

result = fir % sec;

}

return s + "=" + result;

}

// 创建数据源

public static void createdTXT(String fileName) throws IOException {

// 数据源

ArrayList al = new ArrayList<>();

// 添加数据

al.add("5+5");

al.add("10-5");

al.add("2*3");

al.add("6/2");

al.add("6*3");

al.add("8+2");

al.add("9*9");

al.add("99");

al.add("kk");

al.add("+k");

al.add("+我");

al.add("们+我");

al.add("们+我+");

al.add("们+我+你");

al.add("2=4");

al.add("1+2=4");

al.add("1 +2");

al.add("。+2");

al.add("a+2");

// 写到文件中

// 字符缓存流

BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));

// 写

for (String s : al) {

writer.write(s);

writer.newLine();

writer.flush();

}

// 关闭

writer.close();

}

}

java ee io_JAVAEE细细看 进阶 14 - IO总结-Go语言中文社区相关推荐

  1. java unbound_某个版本的JavaSE (unbound)的问题解决-Go语言中文社区

    异常原因:项目在eclipse中找不到对应版本的jdk或者jre,就会报错: 解决方案: ①轻度解决:右击项目 => Build Path => Configure Build Path ...

  2. go与Java微服务对比_微服务架构对比-Go语言中文社区

    最近使用Docker+SpringCloud来代替Zookper+Dobbo来做微服务,总结如下 现如今微服务架构十分流行,而采用微服务构建系统也会带来更清晰的业务划分和可扩展性.同时,支持微服务的技 ...

  3. Java程序员应该看的14本Java书籍!

    关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是:多!看!书! 毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程序员必读之热门书单. 在下面这 1 ...

  4. java io读取doc内容_Java word 内容读取-Go语言中文社区

    1.添加依赖关系(网上好多帖子没有写依赖,害我找半天) org.apache.poi poi 4.0.0 org.apache.poi poi-ooxml 4.0.0 org.apache.poi p ...

  5. java swing多人聊天室_使用java swing和socket编程实现简单的多人聊天室-Go语言中文社区...

    完成效果如下 客户端: 服务器端: 客户端功能: 输入服务器对应的端口,IP号,用户名(昵称),可以互相发送消息 服务器端功能: 输入端口号,启动,可以向所有客户端发送消息,IP地址自动获取. 下面是 ...

  6. go java rsa_RSA加密——go语言版-Go语言中文社区

    源起 在做rsa加密验签的过程中遇到了一些问题,在对整个rsa体系不够了解的情况下花了很多的时间去尝试,但总是各种不通.各种头疼. 在尝试和搜索方案的过程中,不断的发现原来平时对rsa的了解是如此的少 ...

  7. java导出pdf集合_java实现导出pdf-Go语言中文社区

    1.添加Maven依赖 org.xhtmlrenderer flying-saucer-pdf 9.0.3 com.itextpdf itextpdf 5.5.10 2.工具类 package com ...

  8. java控制系统音量_Java 控制 Windows 系统音量-Go语言中文社区

    目录 1.使用 Java 来控制 Windows 系统音量,使用 JNA 调用 windows 底层 API 因为有点麻烦,所以这里采用纯 Java API结合 VBS 脚本的方式进行控制. 2.可以 ...

  9. java蓝桥杯dfs_第七届 蓝桥杯决赛 Java B组 打靶 解题报告(DFS,回溯,全排列)-Go语言中文社区...

    题目: 打靶 小明参加X星球的打靶比赛. 比赛使用电子感应计分系统.其中有一局,小明得了96分. 这局小明共打了6发子弹,没有脱靶. 但望远镜看过去,只有3个弹孔. 显然,有些子弹准确地穿过了前边的弹 ...

最新文章

  1. 企业级nginx服务优化(一)
  2. 科大星云诗社动态20201216
  3. ASP.NET Core和json请求这样用真简单,axios、微信小程序得救了
  4. Boost 1.34.0 终于5.12发布了
  5. 信息学奥赛C++语言: 素数回文数的个数
  6. 在Ubuntu系统中重置root密码
  7. PADS 改变图纸和图页边界大小
  8. java基础类库——数字操作类(五)
  9. 计算机word文档无法工作,电脑docx打不开怎么办(word文档无法打开的解决方法)...
  10. 网络和IP地址计算器
  11. 推荐系统8---FNN、DeepFM与NFM(FM在深度学习中的身影重现)
  12. 虚拟机介绍与使用(VMware Workstation)
  13. 漫威电影宇宙的正确观影顺序
  14. 区块链游戏开发注意事项
  15. 利用声音传感器控制led灯功能_树莓派.利用声音传感器制作声控灯
  16. code文件服务器异常怎么处理,服务器启动异常!Code1 Table does not exist(解决办法)...
  17. Autojs 悟空浏览器
  18. 蚂蚁金服研发的金融级分布式中间件SOFA背后的故事
  19. 计算机培训中心规章制度,某计算机培训中心规章制度.doc
  20. 电子机械节拍器芯片-DLT5F03ATF-杰力科创

热门文章

  1. c语言中条件编译相关的预编译指令
  2. uni-app定时器清除问题
  3. ios15使用纯代码计算cell的高度
  4. linux 对象管理器,Linux多安全策略和动态安全策略框架模块详细分析之函数实现机制中文件对象管理器分析(3)...
  5. php 函数 打印,php打印函数入门教程
  6. Android打开jsp页面,如何确定是通过jsp页面上的Android设备还是IOS设备访问网页
  7. Visual Studio 智能提示消失解决办法
  8. C++11 统一初始化(Uniform Initialization)
  9. Android Github 资源目录
  10. linux远程传文件太慢,解决linux scp、ssh 登陆远程服务器连接速度慢