2019.7.26 NIIT第十天
一、return作用
return
1、可以用来返回方法类型
2、表示终止方法的运行
二、缓冲流的基本作用
BufferedReader;
- 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
1、新建一个文件输入流
2、把文件输入流挂载到输入缓冲流,这样缓冲流就可以关联到输入流的文件上
3、读取所有文字
4、通过循环方法readLine()进行全文本读取
5、方法readLine()如果已到达流末尾,则返回 null
6、释放资源
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class TestBufferedReader {
public static void main(String[] args) {
FileReader fr;
try {
//新建一个文件输入流
fr = new FileReader("d:\\test.txt");
//把文件输入流挂载到输入缓冲流,这样缓冲流就可以关联到输入流的文件上
BufferedReader br=new BufferedReader(fr);
//读取一行输入
/*
String line=br.readLine();
*/
//读取所有文字
//方法readLine()如果已到达流末尾,则返回 null
String line="";
while((line=br.readLine())!=null) {
line=br.readLine();
}
//释放资源
fr.close();
br.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
BufferedWriter;
- 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
1、新建FileWriter
2、创建缓冲流BufferedWriter,把FileWriter挂载到BufferedWriter
3、这样BufferedWriter就关联到文件
4、write(String)进行输入
5、利用FileWriter进行刷新
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class TestBufferedWriter {
public static void main(String[] args) {
FileWriter fw;
try {
//新建FileWriter
fw = new FileWriter("test.txt");
//创建缓冲流BufferedWriter,把FileWriter挂载到BufferedWriter
//这样BufferedWriter就关联到文件
BufferedWriter out=new BufferedWriter(fw);
//输出
out.write("123");
/*使用newLine进行换行*/
out.newLine();
out.write("456");
out.write("789");
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
使用PrintWriter进行自动换行以行为单位输出
import java.io.FileNotFoundException;
import java.io.PrintWriter;
public class TestPrintWriter {
public static void main(String[] args) {
//创建PrintWriter
try {
PrintWriter out=new PrintWriter("test.txt");
//自带回车换行
//以行为单位
out.println("1231");
out.println("4567");
out.println("9874");
out.println("159684");
out.println("1866");
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
三、把集合中的数据写到文本文件中
1、新建集合
2、往集合中放字符串
3、创建输出流 new printWriter()//以行为单位输出
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
public class ArrayListToFile {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList();
list.add("徐宁");
list.add("徐宁1");
list.add("徐宁2");
list.add("徐宁3");
list.add("徐宁4");
list.add("徐宁5");
try {
PrintWriter out=new PrintWriter("array.txt");
//遍历集合
for (String string : list) {
out.println(string);
out.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
四、把文本文件中的数据写到集合中
1、新建输入流
2、关联到BufferedReader
3、以行为单位读取
4、将读取的内容放入集合中
5、遍历集合输出
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class FileToArrayList {
public static void main(String[] args) {
ArrayList<String> list=new ArrayList();
try {
BufferedReader bf=new BufferedReader(new FileReader("array.txt"));
//以行为单位读取内容
String line="";
try {
while((line=bf.readLine())!=null) {
list.add(line);
}
for (String string : list) {
System.out.println(string);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
五、信息输出到文件-学生管理系统
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentArrayList {
static ArrayList<Student> list=new ArrayList();
public static void main(String[] args) throws FileNotFoundException {
int i=0;//计数器
while(i<3) {
Scanner sr=new Scanner(System.in);
Scanner sr1=new Scanner(System.in);
System.out.println("请输入学号");
String id=sr.nextLine();
boolean isIdEsist =false;
for (Student s : list) {
if(s.getId().equals(id)) {
isIdEsist=true;
}
}
if(isIdEsist==true) {
System.out.println("学号存在请重新录取");
continue;
//结束本次循环
}else {
i++;
System.out.println("请输入姓名");
String name=sr.nextLine();
System.out.println("请输入年龄");
int age=sr1.nextInt();
System.out.println("请输入地址");
String address=sr.nextLine();
//创建学生对象
Student s=new Student(id,name,age,address);
list.add(s);
System.out.println("学生添加成功");
}
}
//StringBuilder sb=new StringBuilder();
PrintWriter out=new PrintWriter("StudentArrayList.txt");
/*for (Student s : list) {
sb.append(s.getId()).append(',').append(s.getName()).append(',').append(s.getAge()).append(',').append(s.getAddress());
//把数据保存到文件
out.println(sb.toString());
sb.delete(0, sb.length());
}*/
for (Student s : list) {
String str=s.toString();
out.println(str);
}
out.close();
}
}
六、文件读取信息-学生管理系统##
输入到文件的时候是7行多一行回车
读取信息的时候只有6行,最后一行值为null
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class StudentArrayList2 {
static ArrayList<Student> list=new ArrayList();
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new FileReader("StudentArrayList.txt"));
String line="";
while((line=br.readLine())!=null) {
//解析数据进行输入
String[] srr=line.split(",");
Student s=new Student(srr[0],srr[1],srr[2],srr[3]);
list.add(s);
}
for (Student s : list) {
System.out.println(s.toString());
}
}
}
七、综合案例三
学生管理系统的集合操作--集合中的内容与文件进行交互
把学生信息永久的保存在硬盘上
读文件步骤
1、新建输入流,关联文件
2、以行为单位读取所有信息
3、首先要清空集合
4、解析信息,放入集合
5、关闭流
写文件步骤
1、新建输出流,关联文件
2、以行为单位读取集合数据
3、以逗号为分隔符就行写入
4、关闭流
程序开始前先读取文件对集合进行初始化
操作开始前也要进行文件读取,然后操作完集合后,在进行文件写入