A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1、编码表
        以什么表写,就以什么表读
例        public static void readText()throws IOException
        {
                InputStreamReader isr=new InputStreamReader(new FileInputStream("E:\\java_heima\\gbk.txt"),"gbk");
               
                char[] buf=new char[20];
                int len=isr.read(buf);
               
                String str=new String(buf,0,len);
               
                System.out.println(str);
               
                isr.close();
        }
        public static void writeText() throws IOException
        {
                OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("E:\\java_heima\\gbk.txt"),"GBK");
               
                osw.write("Hello,早上好");
               
                osw.close();
        }

2、
编码 :字符串变成字节数组
        string-->byte[];  str.getBytes();
解码 :字节数组变成字符串
        byte[]-->String;  new String(byte[])




3、练习
package com.deu.Twenty_One;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

/*
* 有5个学生,每个学生有3门成绩,
* 从键盘输入以上数据(包括 姓名,三门课成绩)
* 输入的格式:如:zhangsan,10,10,10计算出总成绩
* 并把学生的信息和计算出的总分按高低顺序存放在磁盘文件“stud.txt”中
*
* 1、描述学生对象
* 2、定义一个可操作学生对象的工具类
*
* 思想
* 1.通过获取键盘录入一行数据,并将该行中的信息取出封装成学生对象
* 2.因为学生有很多。那么就需要存储,使用到集合。因为要对学生的总分排序
*                 所以可以使用TreeSet
* 3.将集合的信息写入到一个文件中
*
*/

class Student implements Comparable<Student>
{
        private String name;
        private int ma,cn,en;
        private int sum;
       
        Student(String name,int ma,int cn,int en)
        {
                this.name=name;
                this.ma=ma;
                this.cn=cn;
                this.en=en;
                sum=ma+cn+en;
        }
        public String getName() {
                return name;
        }
        public int getSum(){
                return sum;
        }
        //接口,要重写compareTo
        public int compareTo(Student s)
        {
                int num=new Integer(this.sum).compareTo(new Integer(s.sum));
                if(num==0)
                        return this.name.compareTo(s.name);
                return num;
        }
        //
        public String toString()
        {
                return "student[ "+name+" ,"+ma+" ,"+cn+" ,"+en+" ]";
        }
        //
        public int hashCode()
        {
                return name.hashCode()+sum*78;
        }
        public boolean equals(Object obj)
        {
                if(!(obj instanceof Student))
                        throw new ClassCastException("类型不匹配");
                Student s=(Student)obj;
               
                return this.name.equals(s.name)&&this.sum==s.sum;
        }
}

class StudentInfTool
{
        public static Set<Student> getStudent() throws IOException
        {
                return getStudent(null);
        }
       
        public static Set<Student> getStudent(Comparator<Student> cmp) throws IOException
        {
                BufferedReader bufr=
                        new BufferedReader(new InputStreamReader(System.in));
               
                String line=null;
               
                Set<Student> stus=null;
                if(cmp==null)
                        stus=new TreeSet<Student>();
                else {
                        stus=new TreeSet<Student>(cmp);
                }
                while((line=bufr.readLine())!=null)
                {
                        if("over".equals(line))
                                break;
                        String[] info=line.split(",");
                       
                        Student stu=new Student(info[0],
                                        Integer.parseInt(info[1]),
                                        Integer.parseInt(info[2]),
                                        Integer.parseInt(info[3]));
                       
                        stus.add(stu);
                }
                bufr.close();
               
                return stus;
        }
        public static void write2File(Set<Student> stus)throws IOException
        {
                BufferedWriter bufw=new BufferedWriter(new FileWriter("E:\\java_heima\\stuinfo.txt"));
               
                for(Student stu:stus)
                {
                        bufw.write(stu.toString()+"\t");
                        bufw.write(stu.getSum()+"");
                        bufw.newLine();
                        bufw.flush();
                }
                bufw.close();
        }
}
public class StudentInfoTest {

        public static void main(String[] args)throws IOException
        {
                // TODO Auto-generated method stub
                Comparator<Student> cmp=Collections.reverseOrder();
               
                Set<Student> stus=StudentInfTool.getStudent(cmp);
               
                StudentInfTool.write2File(stus);
               
        }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马