学习java—第十天学习笔记

307 阅读4分钟

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、关闭流

程序开始前先读取文件对集合进行初始化

操作开始前也要进行文件读取,然后操作完集合后,在进行文件写入