day22-23作业
1.字节流 字符流 2.read() 3.-1 4.System.out 5.InputStream 6.OutputStream
1.IO流按流向分为输入流和输出流,即输入流和输出流都属于IO流。输入流是将数据从硬盘读到内存中,输出流是将数据从内存写到内存中。
IO流按操作类型分为字节流和字符流,字节流和字符流都属于IO流。字节流可以操作任何数据,因为在计算机中任何类型的数据都是以字节存储的。字符流只能操作纯字符数据。字节流直接与数据产生交互,而字符流是将字符转成字节从硬盘读到内存中再将字节转成字符写到内存中。
2.FileInputStream和FileOutputStream:FileInputStream的read()方法一个从文件中读一个字节,返回给程序一个字节,读取文件的次数多,效率低;FileOutputStream的write()方法一次向文件中写入一个字节,写出文件的次数多,效率低。
BufferedInputStream和BufferedOutputStream:BufferedInputStream内置一个缓冲区(数组),BufferedInputStream会一次性从文件中读取8192个字节存在缓冲区中,返回给程序一个,直到缓冲区中所有的都被使用过,才会从文件中重新读取8192个;BufferedOutputStream也内置一个缓冲区(数组),程序向流中写出字节时,会先写到缓冲区中,直到缓冲区写满,BufferedOutputStream才会把缓冲区中的数据一次性写到文件里。
FileReader和FileWriter:FileReader的read()方法可以先读取到字节文件再转为字符,FileWriter的write()方法可以自动将字符转为字节写出。
BufferedReader和BufferedWriter:BufferedReader的read()方法读取字符时会一次读取若干字符到缓冲区,然后逐个返回给程序降低读取文件的次数,提高效率。BufferedWriter的write()方法写出字符时会先写到缓冲区,缓冲区写满时会写到文件,降低写文件的次数,提高效率。
InputStreamReader和OutputStreamWriter:可以使用指导码表读取和写出文件,InputStreamReader是从字节流到字符流的桥梁(in,charset),OutputStreamWriter是从字符流到字节流的桥梁(out,charset)
3.缓冲流的优点是降低了读取和写入文件的次数,提高了效率。缓冲流是在流中内置一个缓冲区,当程序读取文件或向程序写入文件时,必须等到缓冲区满了之后一次性读取或写入,这样便降低了读取和写入文件的次数。
package com.zuikc.kehoutest;
public class Test7 {
/*
* 需求:实现字符串和字节数组之间的相互转换。必如将字符串“北京最课程bjzkc”转换为字节数组,并将字节数组再转换回字符串。
*/
public static void main(String[] args) {
String str = "北京最课程bjzkc";
byte[] arr = str.getBytes();
System.out.println(arr);
String str2 = new String(arr);
System.out.println(str2);
}
}
package com.zuikc.kehoutest; import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; public class Test8 {
/*
* 需求:分别使用文件流和缓冲流复制一个长度大于100MB的视频文件,并观察效率的差异。
*/
public static void main(String[] args) throws IOException {
// demo1();
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("教父.rmvb"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("xxx.rmvb"));
int b;
while((b = bis.read()) != -1) {
bos.write(b);
} bis.close();
bos.close();
} private static void demo1() throws FileNotFoundException, IOException {
FileInputStream fis = new FileInputStream("教父.rmvb");
FileOutputStream fos = new FileOutputStream("xxx.rmvb");
int b;
while((b = fis.read()) != -1) {
fos.write(b);
} fis.close();
fos.close();
} }
package com.zuikc.kehoutest; import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList; public class Test9 {
/*
* 需求:使用IO包中的类读取D盘上exam.txt文本文件的内容,每次读取一行内容,将每行作为一个输入放入ArrayList的泛型集合中并将集合中的内容使用加强for进行输出显示。
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("D:\\exam.txt"));
ArrayList<String> list = new ArrayList<>();
String line;
while((line = br.readLine()) != null) {
list.add(line);
}
for (String string : list) {
System.out.println(string);
}
} }
package com.zuikc.bean;
public class Student implements Comparable<Student>{
private int id;
private String name;
private int age;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(Student s) {
return this.age - s.age;
}
}
package com.zuikc.kehoutest;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
public class Test10 {
/*需求:
* 由控制台按照固定格式输入学生信息,包括学号,姓名,年龄信息,当输入的内容为exit退出;
* 将输入的学生信息分别封装到一个Student对象中,再将每个Student对象加入到一个集合中,要求集合中的元素按照年龄大小正序排序;
* 最后遍历集合,将集合中学生信息写入到记事本,每个学生数据占单独一行。
*/
public static void main(String[] args) throws IOException {
HashSet<Student> hs = new HashSet<>();
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生信息(学号#姓名#年龄):");
while(true) {
String line = sc.nextLine();
if ("quit".equals(line)) {
break;
}
String[] info = line.split("#");
Student stu = new Student(Integer.parseInt(info[0]), info[1],Integer.parseInt(info[2]));
hs.add(stu);
}
BufferedWriter bw = new BufferedWriter(new FileWriter("stu.txt"));
Iterator<Student> it = hs.iterator();
while (it.hasNext()) {
String info2 = it.next().toString();
bw.write(info2);
bw.newLine();
}
bw.close();
}
}
day22-23作业的更多相关文章
- C语言基础 (12) 文件的操作 FILE
课程回顾 结构体基本操作: 结构体类型的定义 // struct为关键字 Stu为自定义标识符 // struct Stu才是结构体类型 // 结构体成员不能在定义类型时赋值 struct Stu { ...
- 团队作业8——第二次项目冲刺(Beta阶段)--5.23 third day
团队作业8--第二次项目冲刺(Beta阶段)--5.23 third day Day three: 会议照片 项目进展 今天是beta冲刺的第三天,组长回到了队伍当中,正式开始改进alpha中存在的功 ...
- 与左侧的 圆括号“(”(位于“e:\大二上课程课件、作业和答案\数据结构\chapter4\sqstack\sqstack\mysqstack.h(23)”)匹配之前遇到文件结束
错误原因是“某对圆括号只打了左括号而没有右括号”,debug方法是:直接根据报错提示:“与左侧的 圆括号“(”(位于“e:\大二上课程课件.作业和答案\数据结构\chapter4\sqstack\sq ...
- 9月23日JavaScript作业----日期时间选择
作业二:日期时间选择 <div style="width:600px; height:100px;"> <select id="year"&g ...
- 9月23日JavaScript作业----两个列表之间移动数据
作业一:两个列表之间数据从一个列表移动到另一个列表 <div style="width:600px; height:500px; margin-top:20px"> & ...
- 团队作业8——第二次项目冲刺(Beta阶段)Day5--5.23
1.提供当天站立式会议照片一张 2.会议内容 讨论已完成的功能 对于界面,谈谈各自的看法 商定测试计划 用户需求进一步调研 3.工作安排 队员 今日任务 明日任务 贡献比 林燕 测试运行效果 根据测试 ...
- 团队作业8----第二次项目冲刺(beta阶段)5.23
Day5-05.23 1.每日会议 会议内容: 1.组长林乔桦对昨日的工作进行了总结并且安排今日的任务. 2.潘益靖副组长说明昨日任务的完成情况. 3.组员对昨天的各项工作进行了汇报以及对今天的工作进 ...
- 团队作业4——第一次项目冲刺(Alpha版本) 4.23
团队作业4--第一次项目冲刺(Alpha版本) Day two: 会议照片 每日站立会议: 项目进展 今天是项目的Alpha敏捷冲刺的第二天,先大概整理下昨天已完成的任务以及今天计划完成的任务.今天主 ...
- 团队作业4——第一次项目冲刺(Alpha版本)4.23
·本次会议为第二次Scrum Meeting会议~ ·本次会议项目经理召开时间为17:00,在教学楼教室召开,召开时长约30分钟,探讨了昨日任务的进展.查重功能.今日要做的任务以及后续所要开展的工作. ...
- 团队作业4——第一次项目冲刺(Alpha版本) 2017.4.23
本次会议为第二次Scrum Meeting会议~ 由于本次会议项目经理召开时间为10:30,在五社区会五号楼召开,召开时长约30分钟,对昨天的工作进行了总结并分配了今天的任务. 1.站立式会议照片(拍 ...
随机推荐
- msyql: navicat 连接时msyql遇到的问题
1.使用 mysql的用户,密码连接 服务器上的MySQL时,连接不上,报 100xx的错误. 1)原因是,MySQL默认情况下,只允许本地连接[127.0.0.1,或localhost]来连接mys ...
- angular浏览器滚动条滚动到指定element 触发事件
angular.module('app').directive('ScrollTrigger', () => { return { restrict: "A", link:f ...
- pgm4
这部分 cover 两个比较特殊的情形,一个是 Gaussian networks,一个是 exponential family. 正态分布常见的参数化策略是均值 和协方差矩阵 ,另一种是使用 inf ...
- 【题解】 bzoj1088: [SCOI2005]扫雷Mine (神奇的做法)
bzoj1088,懒得复制,戳我戳我 Solution: 其实这个有个结论,答案只会有\(0\),\(1\),\(2\)三种(我真的是个弱鸡,这个都想不到) 然后我们假设第一个就可以推出所有的状态(显 ...
- maven搭建springmvc+mybatis项目
上一篇中已经成功使用maven搭建了一个web项目,本篇描述在此基础上怎么搭建一个基于springmvc+mybatis环境的项目. 说了这么久,为什么那么多人都喜欢用maven搭建项目?我们都知道m ...
- 【转】安全加密(一):这些MCU加密方法你都知道吗?
本文导读 随着物联网和边缘计算的出现,五花八门的MCU也被应用其中,如何保证我们的程序安全和知识产权不受侵犯呢,本文我们将对主流MCU的程序加密进行讲解,希望能够帮助你选择最适合自己应用的微处理器. ...
- linux运维之分析日志相关命令(1)
一.分析日志 1.查看有多少IP访问 awk '{print $1}' log_file|sort|uniq|wc -l 2.查看某一个页面被访问的次数 grep "/index.php&q ...
- 【洛谷P1509】找GF
题目大意:给定 N 个物品,每个物品有两个维度的费用,有两个维度的价值,求在有一定费用基础的前提下,满足其中一个维度的价值最大化的前提下,第二个维度的价值最小是多少. 题解:由于是两个维度的价值,因此 ...
- 音视频处理之PS封装的介绍与使用20180928
1.PS封装介绍MPEG2-PS是一种多路复用数字音频,视频等的封装容器.PS是Program Stream(程序流或节目流)的简称.程序流将一个或多个分组但有共同的时间基准的基本数据流(PES)合并 ...
- python singleton design pattern super() 多继承
python singleton design pattern decorate baseclass metaclass import module super() 一.A decorator de ...