一、笔记:
学习IO先明白方向,IO指的是输入、输出流
IO流:用来操作硬盘中的文件的内容
按操作的文件分:字符流 、 字节流
Java提供了两个字节流的根类:InputStream OutputStream
Java提供了两个字符流的根类:Reader Writer 专门用来操作文本文件
文件流:FileInputStream FileOuputStream
FileReader FileWriter
缓冲流:BufferedOutputStream BufferedInputStream
BufferedReader BufferedWriter
Set:1.存储的数据无序 2.数据具有唯一性
HashSet:
TreeSet:
实现对象之间的比较:实现Comparable接口中的compareTo方法:
逻辑关系:正数 负数 零
Map集合:单对(键值对)
HashMap
常用类库:
Object 包装类 BigDecimal BigInteger String StringBuffer StringBuilder Math (数学)
Arrays(数组排序).sort(数组)
如果我想获取当前系统时间?
Date :java提供的日期类,用来获取当前系统时间
SimpleDateFormat •完成字符串和时间对象的转化
Calendar日历类
•人们是:某对时间的认识某年某月某日,这样的日期概念。计算机是long类型的数字。通过Canledar在二者之间搭起桥梁!
•
•
•2018年9月15日
•||||||||||||||
•456465456423132
GregorianCalendar公历(GCalendar)
•GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
•注意:
月份:一月是0,二月是1,以此类推,12月是11
星期:周日是1,周一是2,....周六是7
Monday 星期一 Tuesday 星期二 Wednesday 星期三 Thursday 星期四 Friday 星期五 Saturday 星期六 Sunday 星期
一月:January 二月:February 三月:March 四月:April 五月:May 六月:June 七月:July 八月:August 九月:September 十月:October十一月:November 十二月:December
File类
java.io.File类:文件和目录路径名的抽象表现形式
通过File对象可以访问文件的属性。(读文件属性)
public boolean canRead() public boolean canWrite()
public boolean exists() public boolean isDircetory()
public boolean isFile() public boolean isHidden()
public long lastModified() public long length()
public String getName() public String getPath()
通过File对象创建空文件或目录(在该对象所指的文件或者目录不存在的情况下)
public boolean createNewFile()throws IOException
public boolean delete()
public boolean mkdir()、mkdirs()
二、巩固
写个通讯录,并对该通讯录进行增删改查操作
package com.qfedu.zhuguangyi.homework;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class AdressBook {
public static void main(String []args) throws Exception{
while(true){
System.out.println(" 欢迎来到四火的通讯录");
System.out.println("请选择你要执行的功能");
System.out.println("添加(1)");
System.out.println("删除(2)");
System.out.println("按照姓名查询(3)");
System.out.println("按照手机号查询(4)");
System.out.println("修改(5)");
System.out.println("按照字母顺序全部显示(6)");
System.out.println("退出(7)");
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
switch(x){
case 1:add();break;
case 2:delete();break;
case 3:demandName();break;
case 4:demandNumber();break;
case 5:modification();break;
case 6:display();break;
case 7:exit();break;
}
}
}
//将文件中的东西写入集合中
public static void readData( ArrayList<Person> array)throws IOException {
// 创建输入缓冲流对象
BufferedReader br = new BufferedReader(new FileReader("person.txt"));
String line;
while ((line = br.readLine()) != null) {
String[] datas = line.split(",");
Person p = new Person();
p.setName(datas[0]);
p.setTp(datas[1]);
p.setAdress(datas[2]);
array.add(p);
}
br.close();
}
// 把集合中的数据写入文件
public static void writeData( ArrayList<Person> array)
throws IOException {
// 创建输出缓冲流对象
BufferedWriter bw = new BufferedWriter(new FileWriter("person.txt"));
for (int x = 0; x < array.size(); x++) {
Person p = array.get(x);
StringBuilder sb = new StringBuilder();
sb.append(p.getName()).append(",").append(p.getTp()).append(",").append(p.getAdress());
bw.write(sb.toString());
bw.newLine();
bw.flush();
}
bw.close();
}
//添加
public static void add() throws IOException{
//创建集合对象
ArrayList<Person> array = new ArrayList<Person>();
//从文件中把数据读取到集合中
readData(array);
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
String name;
while(true){
System.out.println("请输入姓名:");
name = sc.nextLine();
int x=-1;
for(int i=0; i<array.size(); i++) {
Person p = array.get(i);
if(p.getName().equals(name)) {
x= -2; //说明这个人名已经存有手机号了
break;
}
}
if(x==-2) {
System.out.println("你输入的姓名已经有人用了,请重新输入");
}else {
break;
}
}
System.out.println("请输入手机号:");
String tp = sc.nextLine();
Person p = new Person();
System.out.println("请输入地址");
String adress=sc.nextLine();
p.setName(name);
p.setTp(tp);
p.setAdress(adress);
System.out.println(tp);
array.add(p);
//把集合中的数据重新写回到文件
writeData(array);
System.out.println("添加成功");
}
//删除
public static void delete() throws IOException{
ArrayList<Person> array = new ArrayList<Person>();
//从文件中把数据读取到集合中
readData(array);
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要删除的人的姓名");
String name=sc.nextLine();
int x=-1;
for(int i=0;i<array.size();i++){
Person p=array.get(i);
if(p.getName().equals(name)){
x=1;
System.out.println(x);
array.remove(i);
writeData(array);
System.out.println("删除成功");
break;
}
}
if(x==-1){
System.out.println("输入的姓名不存在");
}
}
//按照姓名查询
public static void demandName() throws IOException{
ArrayList<Person> array=new ArrayList<Person>();
readData(array);
Scanner sc= new Scanner(System.in);
System.out.println("请输入你要查看的的人的姓名:");
String name=sc.nextLine();
int x=-1;
for(int i=0;i<array.size();i++){
Person p=array.get(i);
if(p.getName().equals(name)){
x=1;
System.out.println("您要查看的人的姓名是:"+name+"手机号是:"+p.getTp()+"地址是:"+p.getAdress());
}
}
if(x==-1){
System.out.println("你要查看的人不存在");
}
}
//按照手机号查询
public static void demandNumber() throws IOException{
ArrayList<Person> array=new ArrayList<Person>();
readData(array);
Scanner sc= new Scanner(System.in);
System.out.println("请输入你要查看的的人的手机号:");
String tp=sc.nextLine();
int x=-1;
for(int i=0;i<array.size();i++){
Person p=array.get(i);
if(tp.equals(p.getTp())){
x=1;
System.out.println("您要查看的人的姓名是:"+p.getName()+"手机号是:"+p.getTp()+"地址是:"+p.getAdress());
}
}
if(x==-1){
System.out.println("你要查看的人不存在");
}
}
//修改
public static void modification()throws IOException{
ArrayList <Person> array=new ArrayList<Person>();
readData(array);
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要修改的人的名字");
String name=sc.nextLine();
String tp = null;
String adress=null;
int x=-1;
for(int i=0;i<array.size();i++){
Person p=array.get(i);
if(p.getName().equals(name)){
tp=p.getTp();
adress=p.getAdress();
x=i;
break;
}
}
if(x==-1){
System.out.println("你输入的名字不存在");
}else{
Person p=new Person();
System.out.println("请问您是要修改名字(1)还是修改手机号(2)还是修改地址(3)或者全部修改(4)");
int y=sc.nextInt();
if(y==1){
Scanner sc1=new Scanner(System.in);
System.out.println("请输入名字:");
String name1=sc1.nextLine();
int h=-1;
for(int i=0;i<array.size();i++){
Person p2=array.get(i);
if(p2.getName().equals(name1)){
h=-2;
break;
}
}
if(h==-2){
System.out.println("这个名字已经存在");
}else{
p.setName(name1);
p.setTp(tp);
p.setAdress(adress);
array.set(x, p);
writeData(array);
System.out.println("修改成功");
}
}
if(y==2){
Scanner sc1=new Scanner(System.in);
System.out.println("请输入手机号");
String tp1=sc1.nextLine();
p.setName(name);
p.setAdress(adress);
p.setTp(tp1);
array.set(x, p);
writeData(array);
System.out.println("修改成功");
}
if(y==3){
Scanner sc1=new Scanner(System.in);
System.out.println("请输入地址");
String address1=sc1.nextLine();
p.setName(name);
p.setAdress(address1);
p.setTp(tp);
array.set(x, p);
writeData(array);
System.out.println("修改成功");
}
if(y==4){
//全部都改
Scanner sc1=new Scanner(System.in);
System.out.println("请输入名字");
String name1=sc1.nextLine();
int h=-1;
for(int i=0;i<array.size();i++){
Person p2=array.get(i);
if(p2.getName().equals(name1)){
h=-2;
break;
}
}
if(h==-2){
System.out.println("这个名字已经存在");
}else{
System.out.println("请输入手机号");
String tp1=sc1.nextLine();
System.out.println("请输入地址");
String address1=sc1.nextLine();
p.setName(name1);
p.setTp(tp1);
p.setAdress(address1);
array.set(x, p);
writeData(array);
System.out.println("修改成功");
}
}
}
}
//按照字母顺序全部显示
public static void display()throws IOException{
ArrayList<Person> array=new ArrayList<Person>();
readData(array);
System.out.println("姓名 手机号 地址");
for(int x=0;x<array.size();x++){
for(int j=0;j<(array.size()-x-1);j++){
Person p1=array.get(j);
Person p2=array.get(j+1);
String name1=p1.getName();
String name2=p2.getName();
if(name1.compareTo(name2)>0){
p1.setName(name2);
p2.setName(name1);
}
}
}
writeData(array);
ArrayList<Person> array1=new ArrayList<Person>();
readData(array1);
for(int i=0;i<array1.size();i++){
Person p=array1.get(i);
System.out.println(p.getName()+" "+" "+" "+" "+" "+" "+" "+p.getTp()+" "+" "+" "+" "+" "+" "+p.getAdress());
}
}
public static void exit()throws IOException{
System.out.println("谢谢使用");
System.exit(0);
}
}
package com.qfedu.zhuguangyi.homework;
public class Person {
//手机号
private String tp;
private String name;
private String adress;
public Person(){
}
public Person(String name,String tp,String adress){
this.tp=tp;
this.name=name;
this.adress=adress;
}
public String getTp() {
return tp;
}
public void setTp(String tp) {
this.tp = tp;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAdress(String adress){
this.adress=adress;
}
public String getAdress(){
return adress;
}
}