首页 > 代码库 > IO—Data

IO—Data

DataOuputStream类:继承了OutputStream类,利用其可以操作基本数据类型
  构造函数:
    DataOutputStream(OutputStream out) 创建一个新的数据输出流,将数据写入指定基础输出流。
  常用的方法:
    writeXxx(Xxx x):Xxx为数据类型:将一个 x值写出到基础输出流中。
    writeByte(byte b) writeInt(int i) writeDouble(Double d)
    writeUTF(String str):以与机器无关方式使用 UTF-8 修改版编码将一个字符串写入基础输出流。

public class TestDataOutputStream {
    public static void main(String[] args) {
        try {
            FileOutputStream fos = new FileOutputStream("D:/ttt.txt");
            DataOutputStream dos = new DataOutputStream(fos);
            dos.writeInt(10);
            dos.writeDouble(3.14);
            dos.writeChar(‘A‘);
            dos.writeUTF("你好");
            dos.flush();
            
            dos.close();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
}

DataInputStream类:继承了InputStream类,利用其可以操作基本数据类型
  构造函数:
    DataInputStream(InputStream in) 创建一个新的数据输入流,将数据读入指定基础输入流。
  常用的方法:
    readXxx():Xxx为数据类型:将一个 x值写出到基础输出流中。
    readInt() readDouble() readChar()...
    readUTF():从包含的输入流中读取此操作需要的字节。

public class TestDataInputStream {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("D:/ttt.txt");
            DataInputStream dis = new DataInputStream(fis);
            int num = dis.readInt();
            double pi = dis.readDouble();
            char c = dis.readChar();
            String str = dis.readUTF();
            System.out.println(num);
            System.out.println(pi);
            System.out.println(c);
            System.out.println(str);
            dis.close();
            fis.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
}

 

 

练习:

/**
 * 1.使用输入流读取标准答案和每个学生的答案
 * 2.比较标准答案和学生答案进行判卷,并统计学员分数
 * 3.将学员名称和分数输出到指定的文件中
 * 技能点:
 * File 类
 * FileReader/BufferedReader
 * FileWriter/BufferedWriter
 * String 类
 *     equals方法:比较内容是否相同
 *     substring(int begin,int end):字符串截取[begin,end)
 *     indexOf(String s):索引指定字符第一次出现的下标位置
 */
public class Homework2 {
    public static void main(String[] args) {
        try {
            File answerFile = new File("D:/test/answer/answer.txt");//保存标准答案的文件
            File stusFile = new File("D:/test");//保存学生答案的文件夹 
            File resultFile = new File("D:/test/result/result.txt");//保存答案的文件
            FileWriter fw = new FileWriter(resultFile);
            BufferedWriter bw = new BufferedWriter(fw);
            //获取学生答案
            File[] stus = stusFile.listFiles();
            for (File file : stus) {
                int score=0;//统计学生分数
                if(file.isFile()){//判断是否为文件
                    FileReader anwserFr = new FileReader(answerFile);
                    BufferedReader answerBr = new BufferedReader(anwserFr);
                    String studentName = file.getName();
                    String name = studentName.substring(0,studentName.indexOf("."));
                    FileReader stuFr = new FileReader(file);
                    BufferedReader stuBr = new BufferedReader(stuFr);
                    String stuAnswer;
                    while((stuAnswer=stuBr.readLine())!=null){//读取学生答案
                        String answer = answerBr.readLine();//读取标准答案
//                        System.out.println(stuAnswer+"\t"+answer);
                        if(answer.equals(stuAnswer)){
                            score+=10;//计算学生得分
                        }
                    }
                    //将学生的成绩和姓名写入到result.txt中
                    bw.write(name+"\t"+score);
                    bw.newLine();
                    bw.flush();
                    //释放资源
                    stuBr.close();
                    stuFr.close();
                    answerBr.close();
                    anwserFr.close();
                }
            }
            bw.close();
            fw.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
}

 

IO—Data