day09-day10---IO-File-字符字节流File的构造方法:File(File parent , String child)
File(String pathName)
File(String parent , String child)
File的成员方法:boolean createNewFile():指定路径不存在该文件时创建文件,返回true,否则返回false
boolean mkdir():当指定的单级文件夹不存在时创建文件夹并返回true,否则返回false
boolean mkdirs():当指定的多级文件夹某一级文件夹不存在时,创建多级文件夹并返回true,否则返回false
boolean delete():删除文件或者删除单级文件夹
判断功能:boolean exists() 判断文件是否存在
boolean isAbsolute() 判断File对象指向的路径是否是绝对路径
boolean isDirectory() 判断File对象指向的路径是否文件夹
boolean isFile() 判断File对象指向的路径是否是文件
boolean isHiddn() 判断File对象是否是隐藏
1.1 File类的获取功能和修改名字功能 File getAbsoluteFile():获取文件的绝对路径,返回File对象
String getAbsolutePath():获取文件的绝对路径,返回路径的字符串
StringgetParent():获取当前路径的父级路径,以字符串形式返回该父级路径
FilegetParentFile():获取当前路径的父级路径,以字File对象形式返回该父级路径
StringgetName():获取文件或文件夹的名称
StringgetPath():获取File对象中封装的路径
longlastModified():以毫秒值返回最后修改时间
longlength():返回文件的字节数
boolean renameTo(File dest): 将当前File对象所指向的路径修改为 指定File所指向的路径 注意修改 的 文件路径不饿能存在,如果存在 修改失败
File的重要获取功能String[] list()
File[] listFiles()
static File[] listRoots()
IO流体系结构按照流的用途分:文件输入输出流 |_ 字节流 |_ FileInputStream |_ FileOutputStream |_ 字符流 |_ FileReader |_ FileWriter缓冲输入输出流 |_ 字节流 |_ BufferedInputStream |_ BufferedOutputStream |_ 字符流 |_ BufferedReader |_ BufferedWriter对象输入输出流 |_ 字节流 |_ ObjectInputStream |_ ObjectOutputStream打印输出流 |_ 字节流 |_ PrintStream |_ 字符流 |_ PrintWriter转换流 |_ 字符流 |_ InputStreamReader |_ OutputStreamWriter
体系结构:字节流 |_ InputStream # 字节输入流 | |_ FileInputStream # 专门操作文件的字节输入流 | |_ BufferedInputStream # 带有缓冲区的字节输入流, 效率高 | |_ ObjectInputStream # 对象输入流 | |_ OutputStream # 字节输出流 |_ FileOutputStream # 专门操作文件的字节输出流 |_ BufferedOutputStream # 带有缓冲区的字节输出流, 效率高 |_ ObjectOutputStream # 对象输出流 |_ PrintStream # 字节打印流字符流 |_ Reader # 字符输入流 | |_ BufferedReader # 带有缓冲区的字符输入流, 效率高 | |_ InputStreamReader # 将字节流转换为字符流输入的转换输入流 | |_ FileReader # 专门操作文件的字符输入流 | |_ Writer # 字符输出流 |_ BufferedWriter # 带有缓冲区的字符输出流, 效率高 |_ OutputStreamWriter # 将字符流转换为字节流输出的转换输出流 |_ FileWriter # 专门操作文件的字符输出流 |_ PrintWriter # 字符打印流
day11多线程多线程概述进程 当前正在运行的程序,一个应用程序再内存中的执行区域
线程 运行一个程序是通过进程中的线程来运行.
进程中的一个执行控制单元,
一个进程可以有一个线程(单线程),也可以有多个线程(多线程);单线程:安全性高,效率低
多线程:安全性低,效率高 360,迅雷等可以同时执行多个任务的
拓展:
并发: 并行发生,多线程就可以实现并发
同步,sync ,注意不是同时的意思,同步是一步接一步,一个执行完了再执行下一个(单线程就是同步)
异步:async 不是一步一步执行,而是同时执行多步,每个步骤何时结束都不确定(多线程就是异步)
阻塞 : 上一行代码正在执行,还没执行完毕,程序就阻塞再这里了,下一行必须等上一行不再阻塞才能执行
创建线程的第一种方式 : 继承Thead类java.lang.Thread类 : 实现Runable接口
构造方法:
Thead Thead() :
Thead Thread(Runnable target) 分配新的 Thread对象。
成员方法: String gerName() 返回线程的名称
void setName(String name) 改变线程名称,使之与参数name相同
cpu执行程序的随机性 //创建线程//修改线程名字//开启调用start()开启线程 而不是run()所有执行的代码 都是再线程中执行的Runnable接口 多线程实现方式2 : 声明一个实现runnale接口的类 . 创建这个类的对象,然后new一个Thread对象,将实现类传入Thread
卖票的时候出现负数或者相同的票,是线程安全问题..出现这种问题的原因: 要有多个线程, 要有被多个线程锁共享的数据 多个线程并发的访问共享的数据synchronized:同步,可以修饰代码块和方法,被修饰的代码块和方法一旦被某个线程访问,则直接锁住,其他的线程无法访问 格式: synchronized(锁对象(可以用this)){ 线程 } 注意:所对象需要被所有的线程共享