「学习笔记」Java基础--IO机制

输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作。几乎所有的程序都具有输入与输出操作,Java把这些输入与输出操作用流来实现,通过统一的接口来表示,从而使程序设计更为简单。

1. File类

  • File与真实硬盘中的文件或文件夹 不是一个东西
    • File是在内存中的一个对象<—映射—>硬盘上的文件或文件夹
  • java.io.File类用于文件或目录信息(名称、大小等)的抽象表示方式,不能对文件内容进行访问。
  • File类中的常用的方法
    • canRead(),canWrite(),isHidden(),isFile(),isDirectory()
    • length(),获取文件中字节的个数
    • lastModified(),获取文件最后的修改时间—>毫秒值
    • *String path = getAbsolutePath(),获取文件的绝对路径 D://test//Test.txt
      • 绝对路径<—->相对路径
      • 绝对路径可以通过完整的字符串,定位盘符,文件夹,文件
      • 相对路径没有盘符的写法,当前工程(项目)所在的位置找寻
    • String name = getName(),获取文件的名字 Test.txt
    • *boolean = createNewFile(),创建新的文件
    • *boolean = mkdir ,创建新的文件夹 外层没有 不能创建
    • *boolean = mkdirs,创建新的文件夹 外层没有 可以自动创建
    • String pname = getParent(),获取当前file的父亲file名字
    • *File file = getParentFile(),获取当前file的父亲file对象
    • String[] names = list(),获取当前file的所有儿子名字
    • *File[] files = listFiles(),获取当前file的所有儿子对象
    • *boolean = delete(),删除文件或空的文件夹 不能删除带元素的文件夹
  • 文件夹的路径(找父目录)
//查找当前file的所有父目录
File file = new File("D:\\test\\bbb\\inner\\InnerTest.txt");
File pfile = file.getParentFile();
while(pfile!=null){
    System.out.println(pfile.getAbsolutePath());
    pfile = pfile.getParentFile();//再找一遍
}
  • 文件夹的遍历—-需要一个递归
//设计一个方法  用来展示(遍历)文件夹,参数-->file(代表文件或文件夹)
public void showFile(File file){
    //获取file的子元素
    //files==null是个文件
    //files!=null是个文件夹
    //files.length!=0是一个带元素的文件夹
    File[] files = file.listFiles();//test文件夹所有子元素
    if(files!=null && files.length!=0){
        for(File f:files){
            this.showFile(f);
        }
    }
    //做自己的显示(file是文件或file是一个空的文件夹)
    System.out.println(file.getAbsolutePath());
}
  • 文件夹的删除—-需要一个递归
//设计一个方法 删除文件夹,参数 file
public void deleteFile(File file){
    //判断file不是空文件夹
    File[] files = file.listFiles();
    if(files!=null && files.length!=0){
        for(File f:files){
            this.deleteFile(f);
        }
    }
    //删除file (file是个文件或file是一个空文件夹)
    file.delete();
}

2. IO流

  • 流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
  • 流的分类:
    • 根据处理数据类型的不同分为:字符流和字节流
    • 根据数据流向不同分为:输入流in(读取)和输出流out(写入)
    • 操作的目标来区分:
      • 文件流,数组流,字符串流,数据流,对象流,网络流…
  • IO流的框架结构
|——IO流
    |————字节流
        |————InputStream
            |————FileInputStream
            |————DataInputStream
            |————ObjectInputStream
        |————OutputStream
            |————FileOutputStream
            |————DataOutputStream
            |————ObjectOutputStream
            |————PrintStream
    |————字符流
        |————Reader
            |————BufferedReader
            |————InputStreamReader
        |————Writer
            |————BufferedWriter
            |————OutputStreamWriter

3. 文件流

读取文件中的信息in,将信息写入文件中out;文件流按照读取或写入的单位(字节数)大小来区分

「学习笔记」Java基础--异常处理机制

Java语言提供了完善的异常处理机制。正确运用这套机制,有助于提高程序的健壮性。

1. 基本概念

  • 异常用于在Java语言中描述运行阶段发生的错误。
  • 在Java中有一个定义好的规则Throwable(可以抛出的)
  • java.lang.Throwable类是所有错误(Error)和异常(Exception)的超类。
    • Error类主要用于描述比较严重无法编码解决的错误,如:JVM内存资源耗尽等。
    • Exception类主要用于描述比较轻微可以编码解决的错误,如:文件损坏、非法输入等。
  • java.lang.Exception类是所有异常的超类,主要分为两大类:
    • RuntimeException - 运行时异常,也叫非检测性异常
    • IOException和其他异常 - 其他异常也叫做检测性异常

注意:当程序运行过程中发生异常而又没有手动处理时,则由java虚拟机采用默认方式处理,即打印异常名称、原因、发生位置并终止程序。在开发中尽量使用条件判断避免异常的发生。

「学习笔记」Java基础--集合框架

为了方便对多个对象的操作,对对象进行存储,集合就是存储对象最常用的一种方式。

1. Collection集合

  • Collection集合框架,字面意思容器;与数组类似,集合的长度存储之后还能改变,集合框架中包含了一系列不同数据结构的实现类。

数组与集合的比较

「学习笔记」Java基础--核心工具类

API (Application Programming Interface) 应用程序编程接口,Java中的API,就是JDK提供的各种功能的Java类。

常用的包

  • java.lang包:是Java最核心的包,JVM(Java虚拟机)启动时自动加载lang包的所有类和接口,无需import。如:System类、String类、Object类、Class类…
  • java.util包:是Java工具包,包括很多工具类和集合。如:Scanner类、Random类…
  • java.io包:是输入输出包,包括读写各种设备。
  • java.net包:是网络编程的包,包括各种网络编程。
  • java.sql包:是操作数据库的所有类和接口。

1. Object类与其常用方法

1.1 Object类
  • java.lang.Object类在Java类继承结构中位于顶端(根类),任何类都是该类的直接或间接子类。
  • Object定义了“对象”的基本行为,被子类默认继承。
1.2 equals() 和 hashCode()
  • boolean equals()方法用于非空对象的“相等”逻辑,默认比较两个对象的地址,返回布尔值。
  • equals()方法要求:自反性/对称性/传递性/一致性/非空性。
  • Java类可以根据需要重写继承自Object的equals()方法。

注意:当equals()方法被重写时,必须重写hashCode方法,以维护hashCode方法的常规协定,该协定声明相等对象必须具有相等的哈希码。

「学习笔记」Java基础--面向对象

面向对象是相对于面向过程而言,过程其实就是函数,对象是将函数和属性进行了封装。 Java中的面向对象(Object Oriented)是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。

1. 类与对象

1.1 类的定义
class 类名 {类体}

类名由多个单词组成时,要求每个单词首字母大写

「学习笔记」Java基础--语法基础

这是Java教程的第一篇,梳理Java基础知识是学习其他专业知识的第一步阶梯;要想精通编程必须通过大量的编程训练,在实践中掌握编程知识,培养编程能力,并逐步理解和掌握程序设计的思想和方法。

1. 数据类型

1.1 两大类:
  1. 基本数据类型:byte, short, int, long, float, double, boolean, char
  2. 引用类型:数组,类(抽象类)class,接口interface,枚举enum,注解@interface

注:单个字节表示8位二进制位,最左边表示符号位(0:正,1:负)。

0%