第九周课程总结 & 实验报告(七)
第九周课程总结
一、多线程
1.线程的状态
2.线程操作的相关方法
二、Java IO
1.操作文件的类---File
()基本介绍
()使用File类操作文件 2.RandomAccessFile类
()写入数据
()读取数据
3.字节流与字符流
()字节流
()字符流
()区别
一、多线程
1.线程的状态
2.线程操作的相关方法
二、Java IO
1.操作文件的类---File
(1)基本介绍
在整个IO包中,唯一表示与文件本身有关的类就是File类,使用File类可以进行创建或删除文件等。
File类的构造方法
public File(String pathname)-->实例化File类的时候,必须设置号路径。

(2)使用File类操作文件
创建
使用createNewFile()
......
File f = new File("路径");
try{ //此方法使用了throws关键字,必须进行异常处理
f.createNewFile();
}catch(IOException e){
e.printStackTrace();
}
删除
使用delete()方法
......
File f = new File("路径");
f.delete();
综合(判断)
使用exists()方法
......
File f = new File("路径");
if(f.exists()){ //判断文件是否存在
......
}
创建文件夹
使用mkdir()方法
列出指定目录的文件
1.public String[]list():列出全部名称,返回一个字符串数组。
2.public File[] listFiles():列出完整路径,返回一个File对象数组。
判断一个给定的路径是否是目录
使用isDirectory()方法
列出指定目录的全部文件
例
package org.lxh.iodemo.filedemo;
import java.io.File;
public class FileDemo11{
public static void main(String args[]){
File my = new File("d:"+File.separator);
print(my);
} public static void print(File file){
if(file!=null){
if(file.isDirector()){
File f[] = fiel.listFile();
if(f != null){
for(int i = 0;i<f.length;i++){
print(f[i]);
}
}
}else{
System.out.println(file);
}
}
}
}
2.RandomAccessFile类
(1)写入数据
import java.io.File ;
import java.io.RandomAccessFile ;
public class RandomAccessFileDemo01{
// 所有的异常直接抛出,程序中不再进行处理
public static void main(String args[]) throws Exception{
File f = new File("d:" + File.separator + "test.txt") ; // 指定要操作的文件
RandomAccessFile rdf = null ; // 声明RandomAccessFile类的对象
rdf = new RandomAccessFile(f,"rw") ;// 读写模式,如果文件不存在,会自动创建
String name = null ;
int age = 0 ;
name = "zhangsan" ; // 字符串长度为8
age = 30 ; // 数字的长度为4
rdf.writeBytes(name) ; // 将姓名写入文件之中
rdf.writeInt(age) ; // 将年龄写入文件之中
name = "lisi " ; // 字符串长度为8
age = 31 ; // 数字的长度为4
rdf.writeBytes(name) ; // 将姓名写入文件之中
rdf.writeInt(age) ; // 将年龄写入文件之中
name = "wangwu " ; // 字符串长度为8
age = 32 ; // 数字的长度为4
rdf.writeBytes(name) ; // 将姓名写入文件之中
rdf.writeInt(age) ; // 将年龄写入文件之中
rdf.close() ; // 关闭
}
};
以上完成了写入的操作,每条数据的长度都是12位。
(2)读取数据
import java.io.File ;
import java.io.RandomAccessFile ;
public class RandomAccessFileDemo02{
// 所有的异常直接抛出,程序中不再进行处理
public static void main(String args[]) throws Exception{
File f = new File("d:" + File.separator + "test.txt") ; // 指定要操作的文件
RandomAccessFile rdf = null ; // 声明RandomAccessFile类的对象
rdf = new RandomAccessFile(f,"r") ;// 以只读的方式打开文件
String name = null ;
int age = 0 ;
byte b[] = new byte[8] ; // 开辟byte数组
// 读取第二个人的信息,意味着要空出第一个人的信息
rdf.skipBytes(12) ; // 跳过第一个人的信息
for(int i=0;i<b.length;i++){
b[i] = rdf.readByte() ; // 读取一个字节
}
name = new String(b) ; // 将读取出来的byte数组变为字符串
age = rdf.readInt() ; // 读取数字
System.out.println("第二个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
// 读取第一个人的信息
rdf.seek(0) ; // 指针回到文件的开头
for(int i=0;i<b.length;i++){
b[i] = rdf.readByte() ; // 读取一个字节
}
name = new String(b) ; // 将读取出来的byte数组变为字符串
age = rdf.readInt() ; // 读取数字
System.out.println("第一个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
rdf.skipBytes(12) ; // 空出第二个人的信息
for(int i=0;i<b.length;i++){
b[i] = rdf.readByte() ; // 读取一个字节
}
name = new String(b) ; // 将读取出来的byte数组变为字符串
age = rdf.readInt() ; // 读取数字
System.out.println("第三个人的信息 --> 姓名:" + name + ";年龄:" + age) ;
rdf.close() ; // 关闭
}
};
3.字节流与字符流
(1)字节流
字节流主要操作byte类型数据,以byte数组为主,主要操作类就是OutputStream类和InputStream类。


(2)字符流
Java提供了Reader和Write两个专门操作字符流的类


(3)区别

实验报告(七)
一、实验源码
package shaopiao;
class Shaopiao implements Runnable{
private int tickets =1000 ;
@Override
public void run() {
while(tickets>0) {
synchronized (this) {
if (tickets > 0) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tickets--;
System.out.println(Thread.currentThread().getName() + "卖出一张票,还剩" + tickets + "张");
} else {
System.out.println("余票不足,暂停出售!");
try {
Thread.sleep(100000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
package shaopiao;
public class Test {
public static void main(String[] args) {
Shaopiao a = new Shaopiao();
int[] b = new int[10];
for(int i=0;i<10;i++)
b[i] = i+1;
for(int i=0;i<10;i++)
new Thread (a,b[i]+"号").start();
}
}
二、实验结果


第九周课程总结 & 实验报告(七)的更多相关文章
- 第九周课程总结&实验报告七
实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. package ...
- 第九周学习总结&实验报告七
实验报告: 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验 ...
- 第九周课程总结&实验报告(七)
实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. 实验代码 pac ...
- 第九周课程总结&实验报告
实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: (3)卖票过程延时1秒钟: (4)不能出现一票多卖或卖出负数号票的情况. public c ...
- 第九周课程总结&实验报告7
实验任务详情: 完成火车站售票程序的模拟.要求:(1)总票数1000张:(2)10个窗口同时开始卖票:(3)卖票过程延时1秒钟:(4)不能出现一票多卖或卖出负数号票的情况. 实验代码: package ...
- 第七周课程总结 & 实验报告(五)
第七周课程总结 一.抽象类与接口的应用 1.实例化 2.实际应用 ---模板设计(抽象类) ---制定标准(接口) 3.设计模式 ---工厂设计 ---代理设计 ---适配器设计 二.抽象类与接口之间 ...
- 第三周课程总结&实验报告
课程总结 在这周对Java进行了更深层次的学习,Java的学习也变得越来越困难而有趣,加入了一些新的构造新的方法,还学习了一些简化代码的方式. 面向对象的基本概念 对于面向对象的程序设计有三个主要特征 ...
- 第六周课程总结&实验报告(四)
实验报告(四) 一.实验目的 1.掌握类的继承 2.变量的继承和覆盖,方法的继承,重载和覆盖的实现 二.实验的内容 1.根据下面的要求实现圆类Circle. 圆类Circle的成员变量:radius表 ...
- 第八周课程总结 & 实验报告(六)
第八周课程总结 一.包装类 介绍 装箱与拆箱 应用 二.异常 基本概念 基本格式 异常类的继承结构 throws关键字 throw关键字 Exception类和RuntimeException类 自定 ...
随机推荐
- 小知识 Sql 格式化工具 AutoPostBack后的定位 Post和Get区别 防止被 Fream
T-Sql 格式化工具 http://jinzb.name/Common/SqlFormat.html AutoPostBack后的定位问题: 给Page 增加属性,MaintainScrollPos ...
- centos安装配置LAMP,https,fastcgi
Centos7 配置LAMP+fastcgi(Centos7.2+php7.0+mariadb+httpd) 环境:阿里云centos7.3 一.安装并配置数据库 1.安装数据库 #yum ins ...
- 关于redis的几件小事(八)缓存与数据库双写时的数据一致性
1.Cache aside pattern 这是最经典的 缓存+数据库 读写模式,操作如下: ①读的时候,先读缓存,缓存没有就读数据库,然后将取出的数据放到缓存,同时返回请求响应. ②更新的时候,先删 ...
- 12 Python之函数进阶
1. 动态传参 *, ** : 形参: 聚合 位置参数* -> 元组 def func(*args, a, b, c): print(a, b , c, args) func(1,2,3,4,5 ...
- GO语言(golang)官方网站!
GO语言官方网站,在上面可以查看所有API文档.使用在线工具编写程序,你可以去看看!! https://golang.org/
- pip 报错找不到pip问题
具体报错如下 解决办法: wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate 使用当前python3运行
- 实体类与数据库字段不匹配问题,java.sql.SQLSyntaxErrorException: Unknown column 'xxx' in 'field list'
控制台报错 ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'user_nam ...
- oracle数据泵expdp和impdp使用
expdp和impdp优缺点 优点: expdp/impdp命令,我们也通常称之为“数据泵(DataPump)”,它具有以下优点: l 在性能上,具有并行处理能力,因此可以获得性能上的优势,加快导入导 ...
- easyui datagrid连续删除问题
如果在datagrid中直接将index传给easyui自带的deletRow方法来删除当前点击行,一开始并没有问题,但是当连续删除的时候就或出问题了. 原因是datagrid行是根据datagrid ...
- Django+BootstrapTable实现表格分页
models.py: from django.db import models # Create your models here. class Article(models.Model): titl ...