IO流 数据库

这篇博客详细介绍了Java中的IO流,包括File类的构造器和方法,如创建、判断、获取和删除等操作。同时,文章涵盖了多线程的概念,如线程的创建、操作和安全问题。此外,还深入讨论了数据库操作,如数据的删除、修改、查询,以及聚合函数的应用,如count、avg、max、min等,最后提到了分组、排序和分页查询的方法。
摘要由CSDN通过智能技术生成

IO流

/水流

/电流

字节流:

  • InputStream
  • OutputStream

字符流:

  • Reader
  • Writer

输入流

输出流


File

文件和目录路径名的抽象表示形式

用户界面和操作系统使用与系统相关的路径名字符串 来命名文件和目录

“E://DNF/File/a.txt”

无论是抽象路径名还是路径名字符串,都可以是绝对路径名或相对路径名

绝对路径:

相对路径:…/图解/1.png

file类的实例是不可变的

也就是说,一旦创建,file对象表示的抽象路径名将永不改变。

构造器:

File(File parent,String child)

根据parent抽象路径名和child路径名字符串创建一个新File实例

Flie(String pathname)

通过将给定路径名字符串转换为抽象路径名来创建一个新File实例

File(String parent,String child)

根据parent路径名字符串和child路径名字符串创建一个新File实例

方法:
创建功能:

mkdir();创建 单层目录

mkdirs();创建多层文件目录

createNewFile()当文件不存在时进行创建新的文件

判断功能:

isFile();判断是否文件

isDirectory();判断是否文件夹

exists();测试此抽象类路径名表示的文件或目录是否存在

canWrite();是否可写

canRead();是否可读

获取功能:

File getAbsoluteFile();返回此抽象路径名的绝对路径名形式

String getAbsoluePath();返回此抽象路径名的绝对路径名字符串

getName(); 返回由此抽象路径名表示的文件或目录的名称。

length(): 长度

getPath(): 获取路径的字符串

lastModified() : 返回此抽象路径名表示的文件最后一次被修改的时间。

list(): 返回文件夹中文件和文件的名称。

listFiles(): 文件的抽象路径实例。

删除功能:

delete: 删除文件,删除空的文件夹。

重命名:

renameTo(File dest): 重新命名此抽象路径名表示的文件

字节流:

InputStream:

此抽象类是表示字节输入流的所有类的超类
read()

OutputStream:

write();

write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。

此抽象类是表示输出字节流的所有类的超类。

FileInputStream:

FileInputStream 用于读取诸如图像数据之类的原始字节流

read(): 下一个数据字节;如果已到达文件末尾,则返回 -1。

read(byte[] b) 从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。

close() 关闭此文件输入流并释放与此流有关的所有系统资源。

使用read 一个一个字节去读取和写入速度太慢了。

所以使用数组来转入读取的数据:

byte []  by = new byte[1024];
                int len = 0;
                while(( len = inputStream.read(by))!=-1) {
   
                  //将数组中的数据写入目标文件
                   // outputStream.write(by);
                    System.out.println(len);
                   //将数组中的数据写入文件,有多少写多少(根据数组的内容实际长度决定)

进程:

​ 正在运行的程序,是系统运行和资源调度的独立单位。
​ 每一个进程都有自己的内存空间和系统资源。
​ 由系统开辟内存空间运行的程序。

线程:

​ 是进程中的单个顺序的控制流程是一条执行路径。
​ 一个进程如果只有一条执行路径称之为单线程。
​ 一个进程有多个执行路径称之为多线程。
​ 由进程开辟空间,运行在进程中的任务。
​ 一个进程至少有一个线程。

多线程:

一个进程中有多个线程。

java 中我们学习多线程。但是java并没有多线程的东西。
 我们java中多线程其实是调用C/C++写好的多线程的内容.

 学习多线程的第一步:
    1.开辟一个进程。
    2. 在进程中开辟线程。
    main 方法是单线程。

多线程创建方式:
创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。
该子类应重写 Thread 类的 run 方法。

一般我们在多线程中去运行的代码比较复杂,简单的代码不会加入到多线程中去。

多线程的思想:(单核的电脑上)
​ 电脑 在运行多个程序的时候,CPU(原子性)。
​ 交叉运行程序。

start() : 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
sleep(); 线程睡眠  毫秒数
setName()设置线程的名字
getName()获取线程的名字。
currentThread() : 返回对当前正在执行的线程对象的引用。

多线程是对资源实现共享吧。
多线程实现的第二种方式:
​ 创建线程的另一种方法是声明实现 Runnable 接口的类。
​ 该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动
​ 实现Runnable 接口:
​ 重写run方法
​ 再去通过线程的类态进程多线程操作。
线程的操作:
​ 线程不能重复启动。
​ start 和 run的区别:
​ yield() :线程礼让
​ stop(): 线程停止 太暴力了
​ sleep():线程休眠
​ join(): 线程等待终止
​ interrupted : 线程中断
​ wait(): 线程等待
​ notify: 线程唤醒
​ notifyAll()

多线程的安全问题:

​ 现在对同一资源共享出现0票?

          1. 有资源共享
          2. 多线程抢占统一资源。
          3. 网络延迟
  怎么解决:
  加锁:
  java中关键字: synchronized  同步
  我们还需要锁。
  锁有这么几种情况
   1. 任意锁  synchronized(任意对象)  解决不了安全问题
   2. 使用this 作为锁
   3.同步方法的锁是this 关键字

数据的操作

方法摘要

方法 解释
delete from (表名) where (字段名) = (值); 删除数据
update (表名) set (字段名)=(值) where id = (值); 修改数据
select (字段1),(字段2) from (表名); 查询多个字段数据
select * from (表名) where (字段)=(值) and (字段)=(值) 复合查询,多个条件
select * from (表名) where (字段)=(值) or (字段)=(值) 任意条件查询
select distinct (字段),(字段) from (表名) 去重查询(一个字段或多个字段都可以)
select * from (表名) where (字段) like “%(关键字)%” 模糊查询
select * from (表名) where (字段) like “___(关键字)” 占位符查询(占几位就打几个“_”)
1.删除数据

​ 删除数据:当数据删除后,再次添加进表的数据id会随着上一次自增后的值+1,而不是替换了被删除数据的id

mysql> select * from student;
+----+-------+---------+--------------+------+
| id | name  | address | email        | age  |
+----+-------+---------+--------------+------+
|  1 | admin | 西安    | 1234@qq.com  |   18 |
|  2 | joke  | 北京    | 1224@qq.com  |   22 |
|  3 | joke  | 上海    | 1224@126.com |   22 |
|  4 | admin | 上海    | 1231@126.com |   32 |
|  5 | jumn  | 北京    | 1230@qq.com  |   19 |
|  6 | 张三  | 南京    | 123@103.com  |   26 |
|  7 | mnum  | 西安    | 123@163.com  |   26 |
+----+-------+---------+--------------+------+
7 rows in set (0.00 sec)

mysql> delete from student where id = 6;
Query OK, 1 row affected (0.02 sec)

mysql> select * from student;
+----+-------+---------+--------------+------+
| id | name  | address | email        | age  |
+----+-------+---------+--------------+------+
|  1 | admin | 西安    | 1234@qq.com  |   18 |
|  2 | joke  | 北京    | 1224@qq.com  |   22 |
|  3 | joke  | 上海    | 1224@126.com |   22 |
|  4 | admin 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值