JAVA坎坷之路(8 day)

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2022-6-27

/**
*
* I/O输入输出流
* File类中的java.io包是唯一代表磁盘文件本身的对象
* 它定义了一些与平台无关的方法用于操作各种文件
* 通过调用File类提供的各种方法 能够创建 删除 或重命名文件
* 判断硬盘上某个文件是否存在
* 查询文件最后修改时间
*/
// 通过指定的字符串类型的文件路径来创建一个新的File对象
File file = new File("D:\\MyProject\\luhuxai_java\\src\\main\\java\\a.txt");
// 根据指定的字符串类型的父路径和字符串类型的子路径(包括文件名称)创建一个新的File对象
File file1 = new File("D:\\MyProject\\luhuxai_java\\src\\main\\java","b.txt");
// 根据指定的File类的父路径和字符串类型的子路径(包括文件名称)创建一个新的File对象
File file2 = new File("D:\\MyProject\\luhuxai_java\\src\\main\\java");
File file3 = new File(file2,"c.txt");

/**
* File类的常用方法
*/
// 判断Flie对象对应的文件或目录是否存在 若存在则返回true 否则返回false
boolean exists = file.exists();
System.out.println(exists);
// 删除File对象对应的文件或目录 若删除成功则返回true 否则返回false
boolean delete = file.delete();
System.out.println(delete);
// 当File对象对应的文件不存在时 该方法将新建一个此File对象所指定的新文件 若创建成功 则返回true 否则返回false
boolean newFile = file.createNewFile();
System.out.println(newFile);

// inputSteam的常用方法
// 创建一个文件字节输入流 还有字节输入流等等 一会找张图展示
FileInputStream file = new FileInputStream("D:\MyProject\luhuxai_java\src\main\java\Huluxia.java");
// 从输入流读取一个8位的字节 把它转换为0-255之间的整数 并返回这一整数
int read = file.read();

System.out.println(read);
// 从输入流读取若干字节 把它们保存到参数指定的数组中 返回的整数表示读取字节的数目
byte[] arr = new byte[1024];

int read1 = file.read(arr);

System.out.println(read1);
// 从输入流读取若干字节 把它们保存到参数指定的数组中 off指定字节数组开始保存数据的起始下标 len 表示读取的字节数目
byte[] b = new byte[1024];
int off=100;
int len=200;
int read2 = file.read(b, off, len);
System.out.println(read2);
// 关闭此输入流并释放与该输入流关联的所有系统资源
file.close();
// OutputStream的常用方法
// 文件字节输出流
FileOutputStream file = new FileOutputStream("D:\MyProject\luhuxai_java\src\main\java\a.txt");
// 向输出流写入一个字节
file.write(1);
// 设置name常量
String name = "凯特社区";
// 获取name的byte
byte[] bytes = name.getBytes();
// 把参数指定的字节数组的所有字节写到输出流
file.write(bytes);
// 将指定的byte数组从off开始写入len个字节到输出流
int off=0;
// 获取长度 还记得吧
int len=bytes.length;
file.write(bytes,off,len);
// 刷新此输出流并强制写出所有缓冲的输出字节
file.flush();
// 关闭此输出流并释放与此流相关的所有系统资源
file.close();

inputstream子类图
ouputstream也差不多换个名字而已

[滑稽][滑稽][滑稽]
好像审核没过
// 文件复制
FileInputStream inputStream = new FileInputStream("D:\MyProject\luhuxai_java\src\main\java\Huluxia.java");
FileOutputStream outputStream = new FileOutputStream("D:\MyProject\luhuxai_java\src\main\java\a.txt");
// 定义一个缓冲区
byte[] bytes = new byte[1024];
//定义一个长度变量
int len;
//长度变量赋值为读取的字节返回的整数 并且返回的整数会保存到缓存区里 len不等于-1时 就会一直读取
while((len = inputStream.read(bytes))!=-1)
{
// 通过缓存区写入输出流
outputStream.write(bytes,0,len);
}
inputStream.close();
outputStream.close();
/**
* 字符流
* jdk提供了字符流
* 字符流的两个顶级抽象类
* Reader和Writer
* 它们的子类图百度搜一下就有
*/
// 文件字符输入流 几乎和前面的字节流一样
FileReader reader = new FileReader("D:\MyProject\luhuxai_java\src\main\java\Huluxia.java");
//文件字符输出流
FileWriter writer = new FileWriter("D:\MyProject\luhuxai_java\src\main\java\a.txt");

int len;

while ((len=reader.read())!=-1)
{
// 转换为char类型就会将整型转为字符类型
System.out.print((char) len);
writer.write(len);
}
reader.close();
writer.close();

/**
* 转换流
* 字节流与字符流的转换
* 两个顶级抽象类
* InputStreamReader
* OutputStreamWriter
*/
FileInputStream in = new FileInputStream("D:\MyProject\luhuxai_java\src\main\java\a.txt");
// 转换字符流
InputStreamReader red = new InputStreamReader(in);
int len;
while ((len=red.read())!=-1)
{
System.out.print((char) len);
}
red.close();
in.close();
休息会
备战多线程[滑稽][滑稽][滑稽][滑稽]
/**
* 多线程
* 线程概述
* 计算机能够同时完成多个任务
* 计算机的cpu即使是单核
* 也可以同时运行多个任务
* 因为操作系统执行多个任务时就是让cpu对多个任务轮流交替执行
* 什么是进程
* 在一个操作系统中
* 每一个独立的程序都可以称为一个进程
* 在计算机中应用程序都是cpu执行的
* 对一个cpu而言
* 在某个时间点只能运行一个程序
* 也就是只能运行一个进程
* 操作系统会为每一个进程分配一段有限的cpu使用时间
* cpu在这段时间中执行某个进程
* 会在下一段时间区执行另一个进程
* 由于cpu速度很快
* 能在极短的时间内在不同的进程之间切换
* 所以让我们感觉同时执行多个程序
* 什么是线程
* 在一个进程中还可以有多个执行单元同时运行
* 这些执行单元可以看作程序执行的一条条线索 称为线程
* 操作系统中的每一个进程中至少存在一个线程
* 在以往的代码里
* 程序都是按照顺序往下执行的
* 没有出现两段代码交替运行的效果 这样的程序就是单线程程序
* 如果要出现两段代码或者多段代码交替运行的效果 需要创建对应的线程
* 多线程的一些缺点
* 创建进程比创建线程开销大 尤其是在windows系统上
* 进程间通信比线程通信慢 因为线程减通信就是读写同一个变量 所以速度很快
*/
public class Huluxia{
public static void main(String[] args) throws Exception{

// 线程的创建
// 继承Thread类创建多线程
// 创建线程对象
D d = new D();
// 开启线程
d.start();
while (true)
{
System.out.println("我是主线程.....");
// 程序休眠一秒
Thread.sleep(1000);
}

}
}
class D extends Thread{
@Override
public void run() {
while (true)
{
System.out.println("多线程来了.....");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}

评论

登录后才可发表内容
  • 主题

    23

  • 帖子

    325

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0593s Mem:2143Kb