Java IO流

  1. 什么是IO

I(Input)/O(OutPut)  数据的流动

  1. 流的分类

1.输入

字节输入流:InPutStream

字符输入流: reader

2.输出

字节输出流: OutPutStream

字符输出流: writer

  1. 文件的定位
  1. FIle
  1. 文件

文件名、后缀、内容

  1. 文件夹

增:

boolean mkdir()  创建此抽象路径名指定的目录。

boolean mkdirs()  创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

 

 

 

 

 

删:

delete() 删除此抽象路径名表示的文件或目录。

public static void main(String[] args) {

File file = new File("F:/xx");

delFile(file);

}

public static void delFile(File file) {

里面是否有内容 (文件夹)    测试此抽象路径名表示的文件是否是一个目录。

if (file.isDirectory()) {

//返回一个抽象路径名数组,在File类型 listFiles 数组中存起来

File[] listFiles = file.listFiles();

//看看递归了啥东西

System.out.println(Arrays.toString(listFiles));

//遍历

for (File file2 : listFiles) {

//自己调用自己 递归

delFile(file2);

}

}

//删除 删除此抽象路径名表示的文件或目录

file.delete();

}

 

查:

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

System.out.println(Arrays.toString(file1.list()));

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

System.out.println(Arrays.toString(file1.listFiles()));

//File[] listRoots() 获取电脑中的盘符

System.out.println(Arrays.toString(file1.listRoots()));

 

 

 

  1. 文件的过滤

定义一个类 实现FilenameFilter接口

需要自己定义过滤的规则

  1. 递归

注意:1.每一次方法的执行都是独立

2.方法出口

结合今天的删除案例去理解

斐波拉契 数列

public static void main(String[] args) {

System.out.println(f(6));

}

//递归    

public static int f(int i) {

//  i == 0 和 i == 1 是出口  

if (i == 0) {

return 0;

}else if (i == 1) {

return 1;

}else{

//循环了 很多次

return f(i-1)+f(i-2);

}

}

 

  1. 字节流:不适合操作中文
  1. 字节输入流

创建对象

new FileInputStream();

调用方法read() 读取 返回值:到达文件末尾 -1

流资源都是需要关闭:先开的后关后开的先关

对象.close();

  1. 字节输出流

创建对象

new FileOutPutStream();

写入一个文件有哪些情况:

文件不存在:自动创建

路径不存在:报错

true:追加

false:覆盖

调用方法:write()  写入

关闭资源

对象.close();

  1. 字符流
  1. 字符输入流

创建对象

new FileReader();

调用方法read()  返回值:文件末尾 -1

流资源都是需要关闭:先开的后关,后开的先关

对象.close()

  1. 字符输出流

创建对象

new FileWriter();

写入一个文件有哪些情况:

文件不存在:自动创建

路径不存在:报错

true:追加

false:覆盖

调用方法:write()

关闭资源

对象.close()

  1. 转化流

使用的场景:在原来的系统上进行升级的时候

字节输入流转换为字符输入流

字节输出流转字符输出流

  1. 正则表达式应用
  1. 正则的规则

^[0-9]*$:验证数字

^[\u4e00-\u9fa5]{0,}$:验证全是汉字

  1. java代码中如何使用

   有专门的一个类 Pattern

   public boolean matches(String regex)

   regex - 用来匹配此字符串的正则表达式

返回:

当且仅当此字符串匹配给定的正则表达式时,返回 true

  1. 使用场景

一般用于注册的信息(密码,账号格式,邮箱,手机号,身份证号等)验证

  1. IP地址
  1. 什么是IP

概念:所谓IP地址就是给每个连接在互联网上的主机分配的一个32位地址;IP是互联网上的每一台计算机都有得一个唯一表示自己的标记。

  1. IP分以下两个大类

IPv4:32位,分4段

IPv6:128位,分8段

  1. InetAddress类要来表示IP地址

常用方法:

static InetAddress getLocalHost()   返回本地主机   

static InetAddress getByName(String host)   在给定主机名的情况下确定主机的 IP 地址  查找局部网内部存在的一个IP地址,如果没有知道到跑出异常

static InetAddress getByAddress(byte[] addr)  根据一个ip地址获得一个IP地址对象,没有进行查找的

boolean isReachable(int timeout)测试是否可以达到该地址 (类似ping)

  1. 端口
  1. 什么是端口

一个电脑上的应用程序都绑定了一个对应的编号(端口),通过IP可以定位到指定的主机(电脑),再加上端口就可以定位到指定的程序了。

  1. 总结

同一台机器上不能有两个程序使用同一个端口,会冲突。

我们开发过程中一般选用注册端口或动态端口范围内的。

以后开发中最好记住我们用到过的常用软件的端口,避免我们知己设定端口的时候和他们冲突

  1. URL
  1. 什么是URL

URL(Uniform Resource Locator)统一资源定位符,可以直接使用此类找到互联网上的资源如一个简单的网页。

一般由:协议名,资源所在主机,端口,资源名等部分组成

  1. URL类中的常用方法

1.构造方法:URL(String protocol, String host, int port, String file)

2.方法 : InputStream openStream() 打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。

3.方法 :URI toURI() 返回与此 URL 等效的 URI

4.更多方法请查看URL对应的API文档。

  1. URLEncoder与URLDecoder
  1. 使用

//正向编码

String encode = URLEncoder.encode("源代码教育","GBK");

System.out.println(encode);

//反编码

String decode = URLDecoder.decode("%D4%B4%B4%FA%C2%EB%BD%CC%D3%FD","GBK");

System.out.println(decode);

  1. 总结

1.区别于字节转字符的编码,之前的代码体现是 String  和 byte[]数组

2.此处是把一个String 转出了另外一种格式的String

转载于:https://my.oschina.net/u/4083693/blog/3028813

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值