当前位置: 首页 > 编程日记 > 正文

Java 学习(20)--异常 /  IO 流

异常(Exception)

(1)程序出现的不正常的情况。

(2)异常的体系

Throwable(接口,将异常类对象交给 JVM  来处理)

|--Error 严重问题,我们不处理。(jvm 错误,程序无法处理)

|--Exception  异常     (程序可以处理的异常)

|--RuntimeException   (运行期异常,可以通过逻辑判断进行控制,不需要捕获   处理方法:1.try...catch  2.throws

|-- 其他(受查)异常  (继承自Exception,且不是RuntimeException,必须要捕获)

(3)异常的处理:

A:JVM 的默认处理

当系统发生运行异常时,Jvm 会创建一个异常类的对象;查看是否对这个异常进行捕获和处理,若没有,则把异常的名称 ,原因 ,位置等信息输出在控制台,但是程序不能继续执行了。

B:自己处理

a:try...catch...finally

自己编写处理代码 ,后面的程序可以继续执行

b:throws

把自己处理不了的,在方法上声明,告诉调用者,这里有问题

(4)面试题

A:编译期异常和运行期异常的区别 ?

编译期异常必须要处理的,否则编译不通过;运行期异常可以不处理,也可以处理

B:throw 和 throws 的区别

throw:在方法体中 ,后面跟的是异常对象名 ,并且只能是一个   throw  抛出的是一个异常对象,说明这里肯定有一个异常产生了

throws:在方法声明后 ,后面跟的是异常的类名 , 可以是多个  ;throws  是声明方法有异常,是一种可能性,这个异常并不一定会产生,

(5)finally    

A:finally 用于释放资源, 它的代码永远会执行。 特殊情况: 在执行到 finally 之前 jvm 退出

B:面试题

a:final,finally,finalize 的 区 别  ?    详解

b: 如果在 catch 里面有 return, 请问 finally 还执行吗 ?如果执行 ,在 return 前还是后    会/ 前(实际上在中间)

C:异常处理的变形    try...catch...finally   /    try...catch...  /  try...catch...catch.../ try...catch...catch...fianlly /  try...finally

(6)自定义异常

继承自 Exception 或者 RuntimeException, 只需要提供无参构造和一个带参构造即可

(7)异常的注意实现

A:父的方法有异常抛出 ,子的重写方法在抛出异常的时候必须要小于等于父的异常

B:父的方法没有异常抛出 ,子的重写方法不能有异常抛出

C:父的方法抛出多个异常 ,子的重写方法必须比父少或者小

 IO

File

我们要想实现输入输出操作就必须要知道,java在硬盘上的表现形式,也就是说硬盘上面的文件和文件夹在java中有一个专门的
类来表示:File
;IO 流操作中大部分都是对文件的操作,所以 Java就提供了 File 类供我们来操作文件

(java类: 成员变量,成员方法,构造方法,成员代码块,成员内部类)

构造方法

A:File file = new File("e:\\demo\\a.txt");// 根据一个路径得到 File 对象

B:File file = new File("e:\\demo","a.txt");// 根据一个目录和一个子文件 / 目录得到 File

对象

C:File file = new File("e:\\demo");

File file2 = new File(file,"a.txt");// 根据一个父 File 对象和一个子文件 / 目录得到 File 对象

1.File(File parent, String child) : 根据一个File对象和一个文件名创建File对象

2.File(String pathname):根据指定的路径创建File对象
3.File(String parent, String child) : 根据一个路径字符串和一个文件名创建File对象

public class FileDemo1 {public static void main(String[] args) throws IOException {File file = new File("d:\\test\\a.txt");  //全路径File file1 = new File("d:\\test", "a.txt"); //真正的路程 , 要创建的文件名 File file1 = new File("d:\\test");File file2 = new File(file1,"a.txt");  //将路径封装到 file 对象里去; //封装好的对象  , 要创建的文件名//以上三种方式实现的效果是一样的System.out.println(file2);}
}

 File 类的功能

A:创建功能

public boolean createNewFile() :根据file对象的路径,创建一个硬盘中的文件或路径,

如果没有对应的路径,就会抛出异常 java.io.IOException;

如果该路径下没有对应文件,则创建成功,返回true;

如果该文件已经存在则创建失败,返回false

public boolean mkdir(): 创建一个文件夹,创建成功返回true

如果没有对应的路径,则创建失败,返回false
                                         如果该文件夹已经存在,则创建失败,返回false

    public boolean mkdirs() :创建文件夹,如果路径中的文件夹不存在,就一起创建出来

public class FileDemo2 {public static void main(String[] args) throws IOException {File file = new File("d:\\test\\a.txt");System.out.println("createNewFile:" + file.createNewFile());File file = new File("d:\\test\\demo");System.out.println("mkdir:" + file.mkdir());File file1 = new File("d:\\test\\aaa");System.out.println("mkdir:" + file1.mkdir());File file2 = new File("d:\\test\\aaa\\bbb");System.out.println("mkdir:" + file2.mkdir());File file3 = new File("d:\\test\\aaa\\bbb\\ccc");System.out.println("mkdir:" + file3.mkdir());File file = new File("d:\\test\\aaa\\bbb\\ccc");System.out.println("mkdirs:" + file.mkdirs());//说明骑白马的不一定是王子File file = new File("D:\\test\\a.txt");System.out.println("mkdir:" + file.mkdir());}
}

B:删除功能

public boolean delete()  :java删除不走回收站,所删除时一定要小心;如果删除时对应的路径名不存在,

则删除失败,返回false;删除此抽象路径名表示的文件或目录。 如果此路径名表示一个目录,则该目录必须为空才能删除。

public class FileDemo3 {public static void main(String[] args) throws IOException {File file = new File("d:\\test\\aaa\\bbb");System.out.println("delete:" + file.delete());}
}

C:重命名功能

public boolean renameTo(File dest)   :将File对象对应的路径名改为传入的file对象对应路径名

如果重命名前后的两个文件不在同一个文件夹下,则该方法有剪切的效果

如果路径名相同,就是改名。

如果路径名不同,就是改名并剪切。

路径以盘符开始:绝对路径 c:\\a.txt

路径不以盘符开始:相对路径 a.txt

public class FileDemo4 {public static void main(String[] args) throws IOException {File file = new File("d:\\test\\lihongxiao.txt");File newFileName = new File("d:\\test\\demo\\weiwei.txt");System.out.println("renameTo:" + file.renameTo(newFileName));File file = new File("aaa.txt");file.createNewFile();//没有写盘符,叫做相对路径,会在项目的根路径下创建File file = new File("aaa\\bbb\\ccc");System.out.println("mkdirs:" + file.mkdirs());// 相对路径}
}

D:判断功能

public boolean isDirectory() :判断是否是文件夹

public boolean isFile() :判断是否是文件

public boolean exists(): 判 断 是 否 存 在

public boolean canRead(): 判 断 是 否 可 读

public boolean canWrite() :判断是否可写

public boolean isHidden() :判断是否隐藏

public class FileDemo5 {public static void main(String[] args) throws IOException {File file = new File("a.txt");File file = new File("ccc");System.out.println("是否文件夹:" + file.isDirectory());File file = new File("aaa");System.out.println("canRead:" + file.canRead());System.out.println("canWrite:" + file.canWrite());File file = new File("aaa");System.out.println("canRead:" + file.canRead());System.out.println("isHidden:" + file.isHidden());}
}

E:获取功能

public String getAbsolutePath() :获取文件的绝对路径

public String getPath() :获取相对路径

public String getName() :获取名称

public long length() :获取长度。字节数

public long lastModified() :获取最后一次的修改时间,毫秒值

public class FileDemo6 {public static void main(String[] args) throws IOException {File file1 = new File("aaa\\bbb\\ccc");file1.mkdirs();File file = new File("aaa\\bbb\\ccc\\weiwei.txt");file.createNewFile();System.out.println("AbsolutePath:----" + file.getAbsolutePath());System.out.println("path:----" + file.getPath());System.out.println("fileName:-----" + file.getName());System.out.println("length:---" + file.length());Date date = new Date(file.lastModified());DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String format = df.format(date);System.out.println(format);}
}

F:高级获取功能

public String[] list() :获取指定目录下的所有文件或者文件夹的名称数组

public File[] listFiles() :获取指定目录下的所有文件或者文件夹的 File数组

public class FileDemo7 {public static void main(String[] args) throws IOException {File file = new File("d:\\");for(String name : file.list()) {System.out.println(name);}File file = new File("d:\\");for(File file1 : file.listFiles()) {System.out.println(file1.getName()+"----"+file1.getAbsolutePath());}}
}

G:过滤器功能

案例:
  判断D盘中是否存在后缀名为.png的文件
  分析:
         1:将D封装到一个File对象中
         2:获取D盘下的所有的文件和文件夹
         3: 从这些文件和文件夹中根据条件遍历查找满足条件的文件

public class FileDemo8 {public static void main(String[] args) throws IOException {File file = new File("D:\\");File[] sonFiles = file.listFiles();for(File file2 : sonFiles) {String filename = file2.getName();if(filename.endsWith(".png") && file2.isFile()) {System.out.println(filename);}}}
}

 方法二:设置条件,查找满足条件的文件

public class FileDemo9 {public static class MyFilter implements FilenameFilter{@Overridepublic boolean accept(File dir, String name) {if(name.endsWith(".png")){return true;}return false;}		}public static void main(String[] args) throws IOException {File file = new File("D:\\");MyFilter myFilter = new MyFilter();String[] list = file.list(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {// TODO Auto-generated method stubreturn false;}});for(String name : list) {System.out.println(name);}}
}

总结:输出指定目录下指定后缀名的文件名称

a:先获取所有的,在遍历的时候判断,再输出

b: 先判断,再获取,最后直接遍历输出即可

相关文章:

runtime自动归档/解档

原文出自:标哥的技术博客 前言 善用runtime,可以解决自动归档解档。想想以前归档是手动写的,确实太麻烦了。现在有了runtime,我们可以做到自动化了。本篇文章旨在学习如何通过runtime实现自动归档和解档,因此不会对所有…

Ivanti 洞察职场新趋势:71% 的员工宁愿放弃升职也要选择随处工作

近日,为从云端到边缘的 IT 资产提供检测、管理、保护和服务的自动化平台供应商 Ivanti 公布了其年度无处不在的办公空间( Everywhere Workplace) 调查结果。这项调查是Ivanti与全球“未来工作”专家共同完成的,调查范围涵盖 6100 …

Shippable和Packet合作提供原生ARM CI/CD

DevOps自动化平台Shippable和裸金属云服务提供商Packet联合发布了一种新的持续集成和交付(CI/CD)托管服务,适用于在Armv8-A架构上开发软件应用的开发人员。该解决方案支持开源和商业软件项目,用于在Packet提供的基于ARM的云服务上…

阿里云ECS架设***过程总结

原文地址:最近开发移动项目,数据库服务是架设在电信服务器上,可怜我的联通网络本地调试直接x碎了一地!!度娘相关资料后,最终决定在阿里云ECS上架设作为跳板来访问电信服务器!一.原理1.阿里云ECS上架设.2.本地连接使用拨号到阿里云ECS.3.使用阿里云ECS网络访问电信服务器.使用前…

MYSQL的MERGE存储引擎

MYSQL的引擎不是一般的多,这次说到的是MERGE,这个引擎有很多特殊的地方: MERGE引擎类型允许你把许多结构相同的表合并为一个表。然后,你可以执行查询,从多个表返回的结果就像从一个表返回的结果一样。每一个合并的表必…

Pandas SQL 语法归纳总结,真的太全了

作者 | 俊欣来源 | 关于数据分析与可视化对于数据分析师而言,Pandas与SQL可能是大家用的比较多的两个工具,两者都可以对数据集进行深度的分析,挖掘出有价值的信息,但是二者的语法有着诸多的不同,今天小编就来总结归纳一…

分布式RPC实践--Dubbo基础篇

2019独角兽企业重金招聘Python工程师标准>>> 简介 Dubbo是阿里巴巴开源的一个高性能的分布式RPC框架,整个框架的核心原理来源于生产者与消费者的运作模型;框架的核心分4大部分: 1. 服务注册中心 注册中心主要用于保存生产者消费者…

又居家办公了,要签合同怎么办?

本篇文章暨 CSDN《中国 101 计划》系列数字化转型场景之一。 《中国 101 计划——探索企业数字化发展新生态》为 CSDN 联合《新程序员》、GitCode.net 开源代码仓共同策划推出的系列活动,寻访一百零一个数字化转型场景,聚合呈现并开通评选通道&#xff0…

lombox的用法(省去了set/get/NoArgsConstructor/AllArgsConstructor)

1、环境的搭建,在eclipse下的eclipse.ini中添加以下参数,-Xbootclasspath/a:C:\repository\org\projectlombok\lombok\1.16.6\lombok-1.16.6.jar-javaagent:C:\repository\org\projectlombok\lombok\1.16.6\lombok-1.16.6.jar重启你的eclipse.2、将lombo…

mysql 压力测试脚本

#创建表DEPTCREATE TABLE dept( /*部门表*/deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,dname VARCHAR(20) NOT NULL DEFAULT "",loc VARCHAR(13) NOT NULL DEFAULT "") ENGINEMyISAM DEFAULT CHARSETutf8 ;#创建表EMP雇员CREATE TABLE emp(empno…

C++语言学习(十二)——C++语言常见函数调用约定

C语言学习(十二)——C语言常见函数调用约定 一、C语言函数调用约定简介 C /C开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数就会出现堆栈异常等现象…

PHP代码保护——Zend Guard

Zend Guard的作用,就是用编译处理的方式来保护PHP源代码免于被反编译查看、未经授权的定制修改、未经许可的使用和重新发布等。而且,它是PHP的东家Zend公司开发的,是完全为PHP量身定做的保护神。 下面,请大家就和我一起来学习使用…

Python 2.4 递归函数

递归函数在函数内部,可以调用其他函数。如果一个函数在内部调用本身,这个函数就是递归函数。举个例子:计算阶乘n!1*2*3*4*5*...*n,用函数fact(n)表示,可以看出fact(n)n!f(n-1)*n所以,fact(n)可以表示为n*fa…

生于俄罗斯的 Web 服务器王者 Nginx,现宣布俄罗斯禁止贡献!

作者 | 苏宓出品 | CSDN不久之前,一些底层工具、软件、开源项目相继宣布在俄罗斯停服,彼时也有不少开发者呼吁 Nginx 是时候进行反限制了。万万没想到,就在国际局势发生改变的一个月后,Nginx 动了手,但是有些「意料之外…

OCP换考题了,052新考题及答案整理-第17题

17、Which two statements are true about tablespaces? A) A database can contain multiple undo tablespaces. B) A database can contain only a single temporary tablespace. C) A database instance stores undo data In the SYSTEM tablespace If no undo tablespace …

linux的mount(挂载)命令详解

linux下挂载(mount)光盘镜像文件、移动硬盘、U盘、Windows和NFS网络共享 linux是一个优秀的开放源码的操作系统,可以运行在大到巨型小到掌上型各类计算机系统上,随着 linux系统的日渐成熟和稳定以及它开放源代码特有的优越性&…

GPT-3 再更新,新增编辑和插入文本功能,简直不要太好用!

编译 | 禾木木出品 | AI科技大本营(ID:rgznai100)GPT-3 是 OpenAL 提出的基于上下文的超大规模自然处理深度学习模型。这意味着如果你给 GPT-3 某些上下文内容时,它会试图去填充其余内容。例如给出句子的前部分,它会推测出下半部分…

scala akka 修炼之路5(scala特质应用场景分析)

scala中特质定义:包括一些字段,行为(方法/函数/动作)和一些未实现的功能接口的集合,能够方便的实现扩展或混入到已有类或抽象类中。 scala中特质(trait)是一个非常实用的特性,在程序设计中能够 更好的抽象现实。使程序更关注各自功…

6.2 sql安全性

最后的例子将显示如何通过现有证书创建-个新的用户。本章稍后会介绍证书,但在 这个例子中,首先创建证书,然后创建用户: USE AdventureWorks2008; CREATE CERTIFICATE SalesCert ENCRYPTION BY PASSWORD Pssw0rd WITH SUBJECT fSa…

2022,人工智能开启未来新密码

作者 | 剑客阿良_ALiang(胡逸) 出品 | AI科技大本营(ID:rgznai100) 购买大型电器、汽车,你是否会询问有没有智能语音功能?是的,潜移默化中人们已经不再将人工智能当作魔术,而是习以为…

PHP Socket配置以及实例

2个php测试文件 server.php <?php//phpinfo();//确保在连接客户端时不会超时set_time_limit(0);$ip 127.0.0.1;$port 1935;/*-------------------------------* socket通信整个过程-------------------------------* socket_create* socket_bind* socket_lis…

Windows下msysGit使用及相关配置

Windows下msysGit使用及相关配置

使用可信证书为windows RDP服务提供加密

2019独角兽企业重金招聘Python工程师标准>>> 0x01 前言 在windows server下可以通过配置远程桌面服务为RDP连接提供有效的数字证书以便提高安全性。 可是个人用户或并没有部署域控制器的用户是无法通过这种途径修改RDP所使用的数字证书&#xff0c;在不安全的环境中…

JavaScript跨域总结与解决办法

JavaScript跨域总结与解决办法 什么是跨域1、document.domainiframe的设置2、动态创建script3、利用iframe和location.hash4、window.name实现的跨域数据传输5、使用HTML5 postMessage6、利用flash本文来自网络&#xff08;http://f2e.me/200904/cross-scripting/&#xff0c;该…

这几个 Python 的小技巧,你会么?

来源丨Python小二作者 Peter Gleeson 是一名数据科学家&#xff0c;日常工作几乎离不 python。一路走来&#xff0c;他积累了不少有用的技巧和 tips&#xff0c;现在就将这些技巧分享给大家。这些技巧将根据其首字母按 A-Z 的顺序进行展示。ALL OR ANYPython 之所以成为这么一门…

如何创建可扩展表视图中的iOS 学习和拓展优化(有待更新)

首先介绍老外的文章&#xff1a;《How To Create an Expandable Table View in iOS》这是老外用Swift实现的&#xff0c;对应的老外github项目源码&#xff1a;https://github.com/appcoda/expandable-table-view小编经过学习了老外的Expandable Table View然后用Objective-C实…

String、StringBuffer、StringBuilder的理解

问题: 理解 Java的字符串&#xff0c;String、StringBuffer、StringBuilder 有什么区别&#xff1f; 知识点 字符串设计和实现考量 String是Immutable(线程安全、字符串常量池复用)。Immutable对象在拷贝时候不需要额外复制数据。至于为什么imumutable&#xff0c;源码如下&…

Linux(centos6.0)下安装Node.js以及使用

Linux下(centos6.0)安装Node.js1.wget http://nodejs.org/dist/node-v0.6.9.tar.gz tar zxvf node-v0.6.9.tar.gz cd node-v0.6.9 ./configure --prefix/usr/local/node ----------安装提示-------------Checking for program g or c : not found Checking for progr…

Pandas 中的这些函数/属性将被 deprecated

作者 | luanhz来源丨小数志导读Pandas对于日常数据分析和处理来说是最常用的工具&#xff08;没有之一&#xff09;&#xff0c;笔者之前也总结分享了很多相关用法和技巧。与之不同&#xff0c;今天本文来介绍几个已经在函数文档中列入"deprecated"的函数/属性&#…

2016.01.04 论文改重

今天的任务是修改查重的问题&#xff0c;另外加入参考文献。 其中&#xff0c;上午的时间完成论文查重。 下午的时间完成参考文献的丰富和标记。 晚上的时间完成DOM基础&#xff08;李炎恢&#xff09;的学习 预计晚上八点到晚上十点 优先级&#xff1a;论文查重&#xff0c;参…