| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> File类、递归算法、IO流 -> 正文阅读 |
|
[数据结构与算法]File类、递归算法、IO流 |
一、File类类代表与平台无关的文件和目录 File? 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 1. 构造器:
2. 常用的方法: createNewFile : 创建一个空文件 mkdir : 创建一个文件夹(目录) mkdirs : 创建多级文件夹
delete : 删除文件 或 文件夹 ,文件夹为空目录时才能删除;如果要想要删除一个非空的文件夹,则可以使用递归算法来实现。 exists: 判断文件或文件夹是否存在 getPath: 获得文件的路径(封装的路径) toString : 相当于getPath() getAbsolutePath : 获得其绝对路径 getName : 获得文件或文件夹的名字 getParent : 获得文件目录的路径 isFile / isDirectory :判断file对象是文件还是文件夹 length:文件大小,单位是字节 listFiles : 获得当前文件夹中的所有文件和文件夹对象数组
二、递归方法1.递归( recursion)
?
递归的定义
若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的;若一个过程直接或间接地调用自己,则称这个过程是递归的过程
?
递归的思想
递归的基本思想就是把规模大的问题转化为规模小的多个相似的子问题来解决 ?递归有两种: ????????(1)直接递归:自己调用自己
(2)间接递归:
A
中调用
B
,
B
中又调用了
A
在方法中调用自身方法
2.递归的三要素 1). 明确递归终止条件 递归应该有一个明确的临界点,程序一旦到达了这个临界点,就不用再继续递归调用。换句话说,该临界点就是一种简单情境,可以防止无限递归。 2). 给出递归终止时的处理办法 在递归的临界点存在一种简单情境,在这种简单情境下,应该直接给出问题的解决方案。一般地,在这种情境下,问题的解决方案是直观的、容易的。 3). 提取重复的逻辑,缩小问题规模 递归问题必须可以分解为若干个规模较小、与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决。从程序实现的角度而言,我们需要抽象出一个干净利落的重复的逻辑,以便使用相同的方式解决子问题。 ?3.递归模板
实例:递归删除文件 删除非空的目录中的所有文件?
找到一个文件夹中所有的.java文件
三、IO流(输入/输出流:Input / Output)IO数据流是一个有序的二进制数据,Java的IO流其实就是一些IO流工具类
?
通常程序需要从外部获取/输出信息
?
这个“外部”范围很广,包括诸如键盘、显示器、文件、磁盘、网络、另外一个程序等
?
“信息”也可以是任何类型的,例如一个对象、串字符、图像、声音等
????????通过使用 java.io 包中的输入/输出流类就可以达到输入输出信息的目的 IO流的分类 1. 输入流和输出流:方向上的分类,以内存为角度的方向,例如,编程实现从U盘一个文件复制到硬盘一个文件 中,用输入流读内容,用输出流写内容,InputStream和Reader类的子类都是输入流;OutputStream和 Writer的子类都是输出流 2. 字节流和字符流:处理数据量分类,也就是每读 / 写一次读 / 写了一字节,那么这个流就是字节流 ;通常处理中文,显示中文时要使用字符流。InputStream和OutputStream类的子类都是字节流;Reader和 Writer的子类都是字符流 3. 节点流和处理流:节点流有叫基本流;处理流又叫高级流 ;处理流都是对节点流的封装,也就是处 理流在节点流的基础上增加了额外的功能。节点流能处理所有的功能需求,但效率低,处理流能处 理特定的需求,效率高 FileInputStream
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:20:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |