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作业的更多相关文章

  1. C语言基础 (12) 文件的操作 FILE

    课程回顾 结构体基本操作: 结构体类型的定义 // struct为关键字 Stu为自定义标识符 // struct Stu才是结构体类型 // 结构体成员不能在定义类型时赋值 struct Stu { ...

  2. 团队作业8——第二次项目冲刺(Beta阶段)--5.23 third day

    团队作业8--第二次项目冲刺(Beta阶段)--5.23 third day Day three: 会议照片 项目进展 今天是beta冲刺的第三天,组长回到了队伍当中,正式开始改进alpha中存在的功 ...

  3. 与左侧的 圆括号“(”(位于“e:\大二上课程课件、作业和答案\数据结构\chapter4\sqstack\sqstack\mysqstack.h(23)”)匹配之前遇到文件结束

    错误原因是“某对圆括号只打了左括号而没有右括号”,debug方法是:直接根据报错提示:“与左侧的 圆括号“(”(位于“e:\大二上课程课件.作业和答案\数据结构\chapter4\sqstack\sq ...

  4. 9月23日JavaScript作业----日期时间选择

    作业二:日期时间选择 <div style="width:600px; height:100px;"> <select id="year"&g ...

  5. 9月23日JavaScript作业----两个列表之间移动数据

    作业一:两个列表之间数据从一个列表移动到另一个列表 <div style="width:600px; height:500px; margin-top:20px"> & ...

  6. 团队作业8——第二次项目冲刺(Beta阶段)Day5--5.23

    1.提供当天站立式会议照片一张 2.会议内容 讨论已完成的功能 对于界面,谈谈各自的看法 商定测试计划 用户需求进一步调研 3.工作安排 队员 今日任务 明日任务 贡献比 林燕 测试运行效果 根据测试 ...

  7. 团队作业8----第二次项目冲刺(beta阶段)5.23

    Day5-05.23 1.每日会议 会议内容: 1.组长林乔桦对昨日的工作进行了总结并且安排今日的任务. 2.潘益靖副组长说明昨日任务的完成情况. 3.组员对昨天的各项工作进行了汇报以及对今天的工作进 ...

  8. 团队作业4——第一次项目冲刺(Alpha版本) 4.23

    团队作业4--第一次项目冲刺(Alpha版本) Day two: 会议照片 每日站立会议: 项目进展 今天是项目的Alpha敏捷冲刺的第二天,先大概整理下昨天已完成的任务以及今天计划完成的任务.今天主 ...

  9. 团队作业4——第一次项目冲刺(Alpha版本)4.23

    ·本次会议为第二次Scrum Meeting会议~ ·本次会议项目经理召开时间为17:00,在教学楼教室召开,召开时长约30分钟,探讨了昨日任务的进展.查重功能.今日要做的任务以及后续所要开展的工作. ...

  10. 团队作业4——第一次项目冲刺(Alpha版本) 2017.4.23

    本次会议为第二次Scrum Meeting会议~ 由于本次会议项目经理召开时间为10:30,在五社区会五号楼召开,召开时长约30分钟,对昨天的工作进行了总结并分配了今天的任务. 1.站立式会议照片(拍 ...

随机推荐

  1. 5G的作业- 云计算

    作业命题:5G对于保险行业的影响,技术层面和业务模式层面 一.5G网络的特点: 5G网络主要有三大特点,极高的速率 enhanced mobile broadband (eMBB),极大的容量 Mas ...

  2. .net 生成html文件后压缩成zip文件并下载

    这里只做一个简单的实例 public ActionResult Index() { string path = Server.MapPath("/test/");//文件输出目录 ...

  3. 普通的jdbc事务在插入数据后 下面的代码报错时 数据不会回滚 但是 spring的事务会回滚

    普通的jdbc事务在插入数据后 下面的代码报错时 数据不会回滚 但是 spring的事务会回滚

  4. BZOJ1050 HAOI2006旅行(最小生成树+LCT)

    暴力枚举路径中权值最小边是哪个,然后求出边权不小于它的边的最小生成树,即可保证该路径上最大值最小.暴力当然可以过,这里使用LCT维护.注意数据中有自环. #include<iostream> ...

  5. 动态生成web表-asp.net table

    1. 页面上定义一个server 的table <table style="width: 100%" id="tbContent" runat=" ...

  6. 从web启动winform程序

    最近有个客户提出想从网站上启动一个客户端的程序,研究了下,实现方法如下: 1. 注入注册表 try                {                    string appPath ...

  7. POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)

    POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / ...

  8. linux basic ------ shell

    一般习惯把 shell 脚本语言和 shell 解释器统称为 shell,用 shell 脚本语言编写的程序简称脚本. shell 解释器 是用 c 语言写一个应用程序,它是用户使用 Unix / L ...

  9. 蓝桥杯 大臣的旅费_树的最长度_两次DFS

    #include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> ...

  10. IOS 与 PHP 通信加密,使用AES 128 CBC no padding

    这个网上的资料真实浩如烟海,但是真正有价值的屈指可数 自己尝试了一天多,终于还是搞定了. 再次要感谢网上的前辈么. 比如下面这个关于php和java端的实现: http://my.oschina.ne ...