我的代码

package com.home.work.io;

public class Student {/*1.创建一个类Student(id,name)

3.创建一个List<Student>,在第2部的时候,每读取一行就将一个Student对象存入该集合
4.随机从集合中抽取一个Student对象,并输出ta的学号和姓名。*/
private String id;
private String name;
public Student(String id,String name){
this.name =name;
this.id = id;

}
public void c(){
System.out.println("学号: "+id+"\t姓名:"+name);
}



public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
测试:
package com.home.work.io;



import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Test1 {

public static void main(String[] args) {
//读取文件names.txt,将里面的所有学生内容逐行读取出来,每一行内容就是一个Student对象
try { InputStreamReader abc = new InputStreamReader(new FileInputStream("D:/names.txt"), "GBK");
BufferedReader read = new BufferedReader(abc);
List <Student> zo = new ArrayList<>();
String temp = null;
while((temp=read.readLine())!=null){
String str = read.readLine();
String[] a = str.split(",");
Student s = new Student(a[0],a[1]);
s.setId(a[0]);
s.setName(a[1]);
zo.add(s);
}
read.close();
Random r = new Random();
String randomName = zo.get(r.nextInt(zo.size())).getName();
zo.get(r.nextInt(zo.size())).c();

} catch (IOException e) {
e.printStackTrace();
}
}
}















注释:
try { InputStreamReader  abc = new InputStreamReader(new FileInputStream("D:/names.txt"), "GBK");
BufferedReader read = new BufferedReader(abc);(注意FileReader)

直接使用FileReader读取一个包含中文字符的文件,将字符输入流放到BufferedReader中,通过BufferedReader读取出来
的中文字符串乱码.

 

文件流读取时使用的编码方式和文件本身编码方式不同,造成乱码

posted @ 2020-03-20 21:05  愚笨小白  阅读(186)  评论(0)    收藏  举报