使用Scanner类解析文件

使用Scanner类和正则表达式来解析文件的特点是以时间换取空间,也就是解析速度相对较,但节省字节内存

  • 使用默认分隔标记解析文件
    创建Scanner对象,并指向要解析的文件
File file = new File("hello.txt");
Scanner sc = new Scanner(file);
  • 使用正则表达式作为分隔标志
    首先创建Scanner对象,指向要解析的文件,然后调用useDelimiter()方法指定正则表达式作为分隔标记

例子

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Example12_18 {
    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("C:\\Users\\Administrator\\Desktop","新建文本文档.txt");
        Scanner scanner = new Scanner(file);
        int count = 0;
        double sum = 0;
        double cost;
        while(scanner.hasNext()){ //默认分隔符为空格
            try{
                cost = scanner.nextInt();
                sum = sum + cost;
                System.out.println(cost);
                count++;
            }
            catch (Exception E){
                String t = scanner.next();  //返回该数的数字型单词
            }
        }
        double aver = sum/count;
        System.out.println("平均数:" + aver);
    }
}

运行结果

D:\HelloWorld\out\production\HelloJava Chapter_12.Part_13.Example12_18
60.0
79.0
88.0
平均数:75.66666666666667

值得注意的是

如果单词不是数字型单词调用nextInt()或nextDouble()方法,就会出现异常,处理异常时可以调用next()方法返回该非数字化单词

打印流

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;

public class Example12_14 {
    public static void main(String[] args) {
        try{
            File file = new File("C:\\Users\\Administrator\\Desktop","abc.txt");
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            PrintStream printStream = new PrintStream(fileOutputStream);
            printStream.println("我是一个学生");
            printStream.close();
            fileOutputStream.close();
        }
        catch(Exception e){
        }
    }
}

小结

  1. 输入流,输出流提供了一条通道程序,用户可以使用这条通道读取"源"中的数据,或把数据送到目的地//输入流的指向成为源,程序从指向源的输入流中读取源中的数据;输出流的指向称为目的地,程序通过输出流中写入数据把信息传递到目的地
  2. InputStream的子类创建的对象成为字节输入流,字节输入流按字节读取源中的数据,只要不关闭流,每次调用读取方法都会按顺序地读取源中的其余内容,直到源中的末尾或流被关闭
  3. Reader的子类创建的称为字符输入流,字符输入流按字符读取源中的数据,只要不关闭流,每次调用读取方法时都会顺序地读取源中的其余内容,直到源中的末尾或流被关闭
  4. OutputStream的子类创建的对象称为输出流,字节输出流按字节将数据写入输出流指向的目的地中,只要不关闭流,每次调用写入方法都会按顺序地向目的地写入内容,直到流被关闭
  5. Writer的子类创建的对象称为字符输出流,字符输出流按字符将数据写入输出流指向的目的地中,只要不关闭流,每次调用写入方法都会按顺序地向目的地写入内容,知道流被关闭
  6. 使用对象流写入或读入对象时要保证对象是序列化的,这是为了保证能把对象写入文件,并能再把对象正确地读回到程序中.使用对象流很容易获取一个序列化对象的克隆,只需将该对象写入对象输出流指向的目的地,然后将该目的地作为一个对象输出流的源,那么该对象输出流从源中读回的对象一定是原对象的一个克隆

操作系统概述

  • 操作系统的定义
    其主要任务是使硬件所提供的能力得到充分的利用,支持应用软件的运行并提供相应的服务
  • 操作系统的作用
    1.通过资源管理,提高工作效率
    2.改善人机界面,提供友好的工作环境
  • 操作系统的特征
    1.并发性//计算机系统中存在着许多同时运动的程序
    2.共享性//各个并发活动要共享计算机系统中的软件和硬件资源
    3.虚拟性//把物理上的一台设备变成逻辑上的多台设备
    4.不确定性//
  • 操作系统的功能
    1.处理机管理//处理机是计算机系统的心脏
    2.存储管理//对内存储器进行分配,扩充和保护
    3.设备管理//
    4.文件管理//对系统软件资源的管理
    5.用户接口//
  • 操作系统的类型
    1.批处理操作系统
    2.分时操作系统
    3.实时操作系统
    4.网络操作系统
    5.分布式操作系统
    6.微机操作系统
    7.嵌入式操作系统
  • 研究操作系统的观点
    1.资源管理观点
    2.虚拟机观点

CET4P178

  • despair
  • obey
  • victim
  • video
  • helpless
  • erect
  • phase
  • possibility
  • amaze
  • previous
  • viewpoint