Java day 15

1、File:文件和目录路径名的抽象表示形式,File类的实例是不可变的

 File的构造方法:
   (1)File(File parent,String child):根据指定的父路径对象和文件路径创建File对象
   (2)File(String pathname):将指定的路径名转换成一个File对象
   (3)File(String parent,String child):根据指定的父路径和文件路径创建File对象
 File的创建功能:
  (1)boolean createNewFile():当指定文件不存在时创建文件并返回true,否则返回false
  (2)boolean mkdir():当指定文件夹不存在时创建文件夹并返回true,否则返回false
  (3)boolean mkdirs():创建指定文件夹,当文件夹所在的目录不存在,则顺道一块创建了
 File的删除功能:
    boolean delete():删除指定的文件或者文件夹,当指定的文件或者文件夹存在时删除文件并返回true,否则返回false
 File的判断功能:
 (1)boolean exists():判断文件或者文件夹是否存在,如果存在就返回true,否则返回false
 (2)boolean isAbsolute():判断File对象指向的路径是否是绝对路径,如果是绝对路径则返回true,否则返回false
 (3)boolean isDirectory():判断File对象指向的路径是否是文件夹,如果是文件夹则返回true,否则返回false
 (4)boolean isFile():判断File对象指向的路径是否是文件,如果是文件则返回true,否则返回false
 (5)boolean isHidden():判断File对象指定的路径是否有隐藏属性,如果隐藏了则返回true,否则返回false
 File的其他功能:
 (1)File getAbsoluteFile():以File对象的形式返回当前File对象所有指向的绝对路径
 (2)String getAbsolutePath():返回File对象所指向的绝对路径
 (3)String getParent():获取父路径返回字符串
 (4)File getParentFile():获取父路径返回File对象
 (5)String getName():获取文件或文件夹的名称
 (6)String getPath():返回创建File对象时给的路径
 (7)long lastModifiled():以毫秒值的形式返回最后修改的时间
 (8)long length():返回文件的字节数
 (9)boolean renameTo(File dest)://将当前File对象所指向的路径修改为指定File所指向的路径
 (10)String[] list():返回当前路径下的所有文件和文件夹名称
 (11)File[] listFiles():返回当前路径下的所有文件和文件夹名称已经绝对路径
 (12)static File[] listRobots():返回的是所有盘符
 注意:
    a、只有指向文件夹的File对象才可以调用该方法
    b、删除一个文件夹,这个文件夹下面不能有其他的文件和文件夹
    c、绝对路径:固定不可改变的路径,以盘符开头
    d、相对某个参照物,不能以盘符开头,在Eclipse中相对路径相对应当前项目的根目录

2、IO流分类:

  (1)流向:
      A、输入流:读取数据    FileReader   Reader
      B、输出流:写出数据    FileWriter     Writer
  (2)数据类型:
      A、字节流:
       a、字节输入流:读取数据  InputStream
       b、字节输出流:写出数据  OutputStream
      B、字符流:
       a、字符输入流:读取数据  Reader
       b、字符输出流:写出数据  Writer
 注意:
       a、字节把数据直接写到文件中,不需要刷新
       b、二进制文件只能使用字节流进行复制(使用windows自带记事本打开是读不懂的)
       c、文本文件的复制既可以使用字符流,也可以使用字节流

3、标准字节输入输出流:

  (1)public static final InputStream in:字节输入流,用来读取键盘录入的数据
  (2)public static final PrintStream out:字节输出流,将数据输出到命令行
  注意:
    标准输出流是一个字节输出流,只能输出字节或者字节数组,,但读取到的数据是字符串,如果想进行输出则需要转换成字节数组,通过标准输出流输出字符串,把标准输出流转换成一种字符输出即可:OutputStreamWriter
 转换流:把字节输入流转换成字符输入流:InputStreamReader

4、打印流:

  (1)PrintStream:在OutputStream基础之上提供了增强功能,可以方便地输出各种类型的数据而不仅限于byte型,不抛出IOException
  (2)PrintWriter:提供了PrintStream的所有打印方法,不抛出IOException
  两者区别:作为处理流使用时,PrintStream只能封装OutputStream类型的字节流,而PrintWriter既可以封装OutputStream类型的字节流,也可以封装Writer类型的字符输出流并增强其功能。
   a、可以自动换行:println()
   b、不能输出字节,但可以输出其他任意类型
   c、通过某些配置,可以实现自动刷新(只有在调用println,printf或format才有用)
   d、也是包装流,不具备写出功能
   e、可以把字节输出流转换成字符输出流
注意:只能输出不能输入
 (3)打印流的特有功能:
     A、自动换行:使用方法println()
     B、自动刷新:创建PrintWriter对象时启动自动刷新开关,并且使用Println等3 个方法
 注意:创建FileWriter对象时boolean参数是否自加,创建打印流对象的boolean类型参数是否自动刷新

5、对象操作流:可以用于读写任意类型的对象

 (1)ObjectOutputStream
                writeObject
             ObjectOutputStream(OutputStream out)
 (2)ObjectInputStream
               readObject
              ObjectInputStream(InputStream in)
  注意:
    a、使用对象输出流写出对象,只能使用对象输入流来读取对象,只能将支持java.io.Serializable接口的对象写入流中 
    b、Exception in thread "main" java.io.EOFException:当输入过程中意外到达文件或流的末尾时,抛出此异常
    c、Serializable:序列号,是一个标识接口,只起标识作用,没有方法,当一个类的对象需要IO流进行读写的时候,这个类必须实现该接口
   解决对实现序列化接口出现的黄色警告问题:Exception in thread "main" java.io.InvalidClassException
   当Serialization运行时检测到某个类具有以下问题之一时,抛出此异常:
      a、该类的序列版本号与从流中读取的类描述符的版本号不匹配
      b、该类包含未知数据类型
      c、该类没有可访问的无参数构造方法

6、Properties:表示了一个持久的属性集,属性列表中每个键及其对应值都是一个字符串

   构造方法:Properties()

7、编码表:把计算机底层的二进制数据转换成我们能看到的字符

 (1)ASCII;(2)GB2312---GBK;(3)Unicode(所有的字符都占两个字节);(4)UTF-8:长度可变的码表;(5)ANSI:本地编码表---gbk
 注意:字符流=字节流+编码

8、多线程:一个进程可以有一个线程,也可以有多个线程

    进程:当前正在运行的程序,一个应用程序在内存中的执行区域
    线程:进程中的一个执行控制单元,执行路径
      a、单线程:安全性高,效率低
      b、多线程:安全性低,效率高(360,迅雷等)
   注意:主方法可以创建多个线程

9、网络地址三要素:

 (1)IP地址:网络中设备的标识,可用主机名
 (2)端口号:
      a、物理端口:网卡口
      b、逻辑端口:每个网路程序都会至少有一个,用于标识进程的逻辑地址,不同的进程(有效端口号:0-65535,其中0-1024系统使用或保留端口)
 (3)传输协议:
     a、UDP:将数据源和目的封装成数据包中,不需要建立连接,不可靠,速度快(数据报的大小限制在64k)
     b、TCP:建立连接,形成传输数据的通道,进行大数据量传输,通过三次握手完成连接,可靠,效率稍低
     UDP协议收发数据的注意事项:
      端口号错误,数据可以正常发出,不会出现异常,但是收不到数据
      Exception in thread "main" java.net.BindException:Address already in use:Cannot bind该异常表示该端口号已经绑定了
      Socket的常用功能:
      (1)InetAddresss getAddress():获取发送端的ip对象
      (2)byte[] getData():获取接收到的数据,也可以直接使用创建对象时的数据
      (3)int getLength():获取具体收到数据的长度
      (4)DatagramPacket:此类表示数据打包 数据byte[] 设备的地址 ip 远程的地址 端口号 DatagramPacket(byte[] buf,int length,InetAddress address,int port)
原文地址:https://www.cnblogs.com/cqxljj/p/10348340.html