2026/4/6 5:41:32
网站建设
项目流程
鞍钢建设集团网站,网站开发的主要步骤,网页设计主页面,运城市住房和城乡建设局网站目录 一、IO流体系
1. File类基础操作
2. 字节流体系
3. 字符流体系
4.应用#xff1a;
二、多线程体系
1. 线程创建方式对比 一、IO流体系
1. File类基础操作
核心知识点#xff1a;
File类的作用#xff1a;表示文件或目录的抽象路径名#xff0c;用于文件和目录…目录一、IO流体系1. File类基础操作2. 字节流体系3. 字符流体系4.应用二、多线程体系1. 线程创建方式对比一、IO流体系1. File类基础操作核心知识点File类的作用表示文件或目录的抽象路径名用于文件和目录的创建、删除、重命名、查询等操作相对路径与绝对路径理解两种路径的区别和使用场景路径分隔符Windows使用\Unix/Linux使用/Java中使用File.separator保证跨平台性重要方法分类判断型exists(),isFile(),isDirectory(),canRead(),canWrite(),isHidden()获取型getName(),getPath(),getAbsolutePath(),getParent(),length()操作型createNewFile(),mkdir()/mkdirs(),delete(),renameTo()遍历型list(),listFiles(),list(FilenameFilter)注意事项mkdir()只能创建单级目录mkdirs()可创建多级目录delete()无法删除非空目录文件操作前应先判断文件是否存在2. 字节流体系字节流基类InputStream / OutputStream├── 文件字节流FileInputStream / FileOutputStream├── 缓冲字节流BufferedInputStream / BufferedOutputStream├── 数据字节流DataInputStream / DataOutputStream├── 对象字节流ObjectInputStream / ObjectOutputStream├── 打印字节流PrintStream└── 字节数组流ByteArrayInputStream / ByteArrayOutputStream3. 字符流体系字符流基类Reader / Writer├── 文件字符流FileReader / FileWriter├── 缓冲字符流BufferedReader / BufferedWriter├── 转换流InputStreamReader / OutputStreamWriter├── 打印字符流PrintWriter└── 字符数组流CharArrayReader / CharArrayWriter缓冲字符流特有方法BufferedReader.readLine()读取一行文本BufferedWriter.newLine()写入换行符4.应用package o_IO.Test2; import java.io.*; import java.util.Scanner; public class Dome2 { public static void main(String[] args) throws IOException { /* 需求:写一个登陆小案例。(添加锁定账号功能) 步骤: 将正确的用户名和密码手动保存在本地的userinfo.txt文件中。 保存格式为:usernamezhangsanpassword123count0 让用户键盘录入用户名和密码 比较用户录入的和正确的用户名密码是否一致 如果一致则打印登陆成功 如果不一致则打印登陆失败,连续输错三次账号锁定 */ //读取正确用户密码 BufferedReader br new BufferedReader(new FileReader(src\\o_IO\\userinfo.txt)); String line br.readLine();//usernamezhangsanpassword123count0 br.close(); String[] split line.split(); String rightUsername split[0].split()[1]; String rightPassword split[1].split()[1]; int count Integer.parseInt(split[2].split()[1]); //用户输入账号密码 Scanner sc new Scanner(System.in); System.out.println(请输入用户名); String username sc.nextLine(); System.out.println(请输入密码); String password sc.nextLine(); //判断账号 if (username.equals(rightUsername) password.equals(rightPassword) count 3) { System.out.println(登陆成功); //count清零 writeInof(rightUsername,rightPassword,0); } else { if (count 3) { count; System.out.println(登陆失败还剩下(3-count)次机会); }else { System.out.println(账户锁定); } writeInof(rightUsername,rightPassword,count); } } //定义方法将数据写回 public static void writeInof(String rightUsername,String rightPassword,int count) throws IOException { BufferedWriter bw new BufferedWriter(new FileWriter(src\\o_IO\\userinfo.txt)); bw.write(username rightUsername password rightPassword count count); bw.close(); } }二、多线程体系1. 线程创建方式对比继承Thread类优点简单直接缺点单继承限制不能继承其他类适用简单任务不需要共享资源package p_Thread.Chreadcase1; public class MyThread extends Thread{ Override public void run() { for (int i 0; i 100; i) { System.out.println(getName()Hello World); } } } package p_Thread.Chreadcase1; public class ThreadDome { public static void main(String[] args) { /*多线程的第一种启动方式: 1.自己定义一个类继承Thread 2.重写run方法 3.创建子类的对象并启动线程 */ MyThread t1 new MyThread(); MyThread t2 new MyThread(); t1.setName(线程一); t2.setName(线程二); t1.start(); t2.start(); } }实现Runnable接口优点避免单继承限制资源共享方便缺点不能直接获取线程执行结果适用需要资源共享的多线程package p_Thread.Chreadcase2; public class MyRun implements Runnable{ Override public void run() { for (int i 0; i 100; i) { //获取当前线程对象 Thread t Thread.currentThread(); System.out.println(t.getName()HelloWorld); } } } package p_Thread.Chreadcase2; public class ThreadDome { public static void main(String[] args) { /* 多线程的第二种启动方式: 1.自己定义一个类实现Runnable接口 2.重写里面的run方法 3.创建自己的类的对象 4.创建一个Thread类的对象并开启线程 */ //创建MyRun对象 //表示多线程要执行的任务 MyRun mr new MyRun(); //创建线程对象 Thread t1 new Thread(mr); Thread t2 new Thread(mr); //给线程起名字 t1.setName(线程一); t2.setName(线程二); //开启线程 t1.start(); t2.start(); } }实现Callable接口优点可以获取返回值可以抛出异常缺点需要FutureTask包装适用需要返回结果的多线程任务package p_Thread.Chreadcase3; import java.util.concurrent.Callable; public class MyCallable implements CallableInteger { Override public Integer call() throws Exception { int sum0; for(int i0;i100;i){ sumi; } return sum; } } package p_Thread.Chreadcase3; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class ThreadDome { public static void main(String[] args) throws ExecutionException, InterruptedException { /* 多线程的第三种实现方式: 特点:可以获取到多线程运行的结果 1.创建一个类MyCallable实现callable接口 2.重写ca11 (是有返回值的表示多线程运行的结果) 3.创建MyCallable的对象(表示多线程要执行的任务) 4.创建FutureTask的对象(作用管理多线程运行的结果) 5.创建Thread类的对象并启动(表示线程) */ //创建MyCallable对象表示多线程要执行的任务 MyCallable mc new MyCallable(); //创建FutrueTask对象(管理多线程运行结果) FutureTaskInteger ft new FutureTask(mc); //创建线程对象 Thread t new Thread(ft); //启动线程 t.start(); //获取结果 Integer result ft.get(); System.out.println(result); } }