-
老师从控制台录入学员信息,每行数据代表一个学员信息
具体输入格式是:
name:zhangsan;age:34;sex:Male
age:28;name:lisi;sex:FeMale
sex:Male;name:wangwu;age:31
要求:
1.将读取的数据放入List<Person>
2.将List进行序列化到工程下的file/source.txt,并反序列化测试
3.找到姓名是zhangsan的人,并将所有数据以key-value形式存入file/zhang.properties文件
4.读取内容,将年龄修改成40并再次写入.properties文件.
public class Morning {
static class Person implements Serializable{
private int age;
private String name;
private String sex;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Person() {
}
public void initperson(String message){
String[] split = message.split(":|;");
for (int i = 0; i < split.length; i++) {
if(split[i].equals("name")){
this.name = split[++i];
}else if(split[i].equals("age")){
this.age = Integer.parseInt(split[++i]);
}else if(split[i].equals("sex")){
this.sex = split[++i];
}
}
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
", name=" + name +
", sex=" + sex +
'}';
}
public Person(int age, String name, String sex) {
this.age = age;
this.name = name;
this.sex = sex;
}
}
public static List<Person> getPerson(){
Scanner scanner = new Scanner(System.in);
ArrayList<Person> people = new ArrayList<>();
for (int j = 0; j < 3; j++) {
String next = scanner.next();
Person person = new Person();
person.initperson(next);
people.add(person);
}
return people;
}
public static void main(String[] args) {
List<Person> persons = getPerson();
System.out.println(persons);
try(ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:/D/bigData/code/demo1/bigdataDay19/src/com/qf/person.txt"));){
for (int i = 0; i < persons.size(); i++) {
out.writeObject(persons.get(i));
}
out.writeObject(null);
}catch (Exception e){
e.printStackTrace();
}
Person zhangsan = null;
try(ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:/D/bigData/code/demo1/bigdataDay19/src/com/qf/person.txt"));
){
Person p = (Person)in.readObject();
ArrayList<Person> people = new ArrayList<>();
while (p!=null){
people.add(p);
if(p.getName().equals("zhangsan"))
zhangsan = p;
p = (Person)in.readObject();
}
}catch (Exception e){
e.printStackTrace();
}
savePersonToProp(zhangsan);
try(InputStream in = new FileInputStream("C:/D/bigData/code/demo1/bigdataDay19/src/com/qf/zhang.properties");
){
Properties properties = new Properties();
properties.load(in);
Person newZhang = new Person();
newZhang.setName(properties.getProperty("name"));
newZhang.setSex(properties.getProperty("sex"));
newZhang.setAge(40);
savePersonToProp(newZhang);
}catch (Exception e){
e.printStackTrace();
}
}
private static void savePersonToProp(Morning.Person zhangsan) {
System.out.println("保存"+zhangsan);
try(ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:\\D\\bigData\\code\\demo1\\bigdataDay19\\src\\com\\qf\\zhang.properties"));){
Properties properties = new Properties();
properties.setProperty("name",zhangsan.getName());
properties.setProperty("age",zhangsan.getAge()+"");
properties.setProperty("sex",zhangsan.getName());
properties.store(out,"zhangsan");
}catch (Exception e){
e.printStackTrace();
}
}
}
-
使⽤FileVisitor遍历⽂件和⽬录
public class FileVisitorTest {
public static void main(String[] args) throws Exception {
Files.walkFileTree(Paths.get("C:\\D\\bigData"),new SimpleFileVisitor<Path>(){
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
System.out.println("正在遍历子文件夹"+dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
if(file.endsWith("fileVisitor.txt")){
System.out.println("找到目标文件");
System.out.println(file.getFileName());
return FileVisitResult.TERMINATE;
}else System.out.println(file.getFileName());
return FileVisitResult.CONTINUE;
}
});
}
}
- 单例设计模式
public class SingleInstance {
int num;
private SingleInstance() {
}
private static SingleInstance s = null;
public static SingleInstance getSingleInstance(){
if(s==null){
s = new SingleInstance();
}
return s;
}
}
public class Demo1 {
public static void main(String[] args) {
class A{
int numA = 4;
public void SingleA(){
SingleInstance singleInstance = SingleInstance.getSingleInstance();
singleInstance.num = numA;
}
}
class B{
int numB = 5;
public void SingleB(){
SingleInstance singleInstance = SingleInstance.getSingleInstance();
singleInstance.num = numB;
}
}
A a = new A();
B b = new B();
a.SingleA();
System.out.println(SingleInstance.getSingleInstance().num);
b.SingleB();
System.out.println(SingleInstance.getSingleInstance().num);
}
}