标签:阶乘 操作 nbsp 使用步骤 可扩展 成员变量 读取字符串 不能 创建
JAVA15
l i/o全称:
input/output
l 之前的程序都是在内存中,一旦结束就没有了
l 如果需要永久使用这些数据就需要持久化存储
l 需要用到IO技术 将数据放到持久化设备
l Output 写 Input 读 IO操作两种方方式
l 数据存在文件中 文件在文件夹中 路径
l 操作这些文件夹就需要用到File类
l Java.io 包中
l 文件和目录路径名的抽象表现形式
l / Linux盘符 \ Windows盘符
l 将操作系统中的文件目录路径封装成File对象
l 提供方法操作系统中的内容
l File与系统无关的类
l 文件 File 目录 Directory 路径 Path
l String 类型
l 实际是char类型的变形 加了个 +“”
l 与系统有关的路径分隔符
l 打印结果为 ;
l ;表示目录的分隔
l Linux目录分隔符是 :
l 与系统有关的默认名称分隔符
l 打印结果为 \
l Linux是 /
l 不要写死分隔符
l 与系统无关的程序 需要使用这个常量
l 传递路径名
l 可以写到文件夹 也可以写到文件
l 示例
l 打印结果为 路径
l Windows系统文件名可以不区分大小写
l 即使路径错了也不报错 因为File只是把路径变为File对象来调用方法 不分辨是否正确
l 有专门的方法exits()
l 绝对路径
l 相对路径
l 传递路径
l 传递字符串父路径 字符串子路径
l 示例
l 单独控制父路径和子路径
l 比如用户输入子路径和父路径
l 传递路径
l 传递File类型的父路径 字符串子路径
l 父路径可以直接使用File的功能
l
l Boolean CreateNewFile()
l 创建成功返回true 否则返回 false
l 需要进行异常处理 异常类在io包里
l 示例
运行结果
l 文件名是汉字
l Boolean mkdir()
l 创建成功返回true 否则返回 false
l 可以创建一层或多级目录 Boolean mkdirs()
l 示例
l Boolean delete()
l 删除成功返回true 否则返回false
l 删除不走回收站 直接从硬盘中删除
l String getName()
l String getPath()
l Long length()
l getAbsolutePath() getAbsoluteFile()
l getParent()getParentFile()
getParentFile()返回File对象
l boolean exists()
l isDirectory()
l List
l listFile()
l listRoots()
l 遍历方法ListFiles()重载形式
l ListFiles(FileFilter filter)接口类型
l 传递FileFilter的接口实现类
l 查看文档没有实现类 自定义实现类
l 示例
l 首先遍历demo目录
l 然后遍历demo下的a目录
l 文件不能遍历只能遍历文件夹
l 所以判断路径是不是文件夹 isDirectory
l 如果是就遍历这个目录 递归调用本方法
l 如果不是目录就直接打印这个目录
l 为了打印出原本的父目录 因此需要先打印下路径
l
l 概念
l 注意
l 练习
速度慢 执行100次
a) 多次调用方法 进栈
b) 遇到Return方法结束
a) 求阶乘
a) Int只能到13-14
public static double sum(double n){
if(n==1||n==2){
return 1;
}else{
return sum(n-1)+sum(n-2);
}
}
l 文件到程序 输入
l 程序到文件 输出
l 一次操作1个字节 8个二进制位bit
l 写入文件 任意文件
l 抽象类
l Java.io包
l 表示输出字节流的所有类的超类
l 方法是写入文件的方法
l write(int b)写入一个字节
l write(byte[] b)写入字节数组
l write(byte[] b,int off,int len)写入字节数组 off开始写入索引 len写入个数
l close()方法 关闭流对象 释放与此流相关的资源 否则无法删除
l 使用需要子类
l FileOutputStream
a) 创建流子类的对象,绑定输出数据的目的
b) 调用流对象方法write写入文件 进行输出
c) close释放资源
n 写入一个字节
a) 文本工具打开会先过编码表
b) 所以写入的100是在编码表中对应的d
c) 写入的49 48 48对应的是100
n 写入一个字节数组
如果是负数
则是汉字 负数代表汉字 两个负数代表一个汉字 一个汉字两个字节 一个数字一个字节
少写一个负数 会缺少
n 写入一部分字节数组
只写入了BC
n 写入字节数组的简便方式
n 文件的续写和换行符号
a) 在FileOutputStream的构造方法中的第二个参数加入true
b) 示例
a) \t \r
b) 符号换行
c) 写在上一行的末尾 或者下一行的开头
d)
l 所有字节输入流的超类
l 读取任意文件 每次只读取一个字节
l 抽象类
l 读取方法 read()
l 读取方法read(byte[] b)
l FileInputStream
n 构造方法 为这个流对象绑定数据源
n 读取步骤
n 示例
n read(byte[] b)读取
没有读取完毕 继续读取
读取到数据末尾都是-1
n 原理分析图
数组作用 缓冲文件字节 提高效率
Int返回值 表示读取到的有效字节个数
因此改为循环读取
结果多一个 d 因此将数组长度需要变为5
具有可变性 需要进一步进行改进
由于文件大小不定 因此数组应该设置为1024的整数倍
l 不选择抛出异常
l 使用try catch
l close发法写到finally 仍然需要异常处理
l 如果出现异常无法进行处理 只能抛出运行时异常
l 示例
如果建立文件失败 不需要关资源 因此在close方法前需要对流对象进行判断是否为null
l InputStream读取 OutputStream写入
l 复制可扩展为上传下载
l
l 步骤(一次读一个字节)
l 示例
l 步骤(读取字节数组)
测量时间
l 以上都是对数字字母的处理
l 字符流目的是为了处理文本文件
l 所以需要了解编码表
l Ascii码表 一个字节中的7位就可以表示 对应的字节都是整数
l iso-8859-1 拉丁码表 用一个字节的8位
l GB2312 简体中文码表 包含6000-7000中文和汉字,两个字节表示 两个字节第一个字节是1,第二个字节可能是0
l Unicode 国际标准码表 无论是什么文字 都用两个字节
l UTF-8 基础unicode 一个字节就可以存储数据 就不要用两个字节存储 后期开发经常使用 而且这个码表更加标准化 在每一个字节头加入了编码信息(后期到api中查找)
l 能识别的中文码表:GBK UTF-8 正因为识别码表不唯一 表现的负数不同 所以涉及到了解码问题
l 开发而言 常见的编码 GBK UTF-8 ISO-8859-1
l 编码 文字变数字97 98 99
l 解码 数字变文字 a b c
l Java.io.Writer
l 所有字符输出流的超类
l 只能写文本文件
l write(int c)写一个字符
l write(char[] c)写字符数组
l write(char[],int,int )写字符数组的一部分 开始索引 写几个
l write(String s)写入字符串
l FileWriter
l 构造方法 写入的数据目的
l 构造方法 接收的参数类型 File 类型对象或者 String 文件名
l 字符输出流写数据 必须使用flush 刷新方法 否则就不会写入
l 示例
如果不写flush只在最后写个close也能写进去,但是最好写一个字符数组刷新一下 因为如果关闭时一起刷新会放在内存中,从而消耗系统资源 这样会节省系统资源
l 只能读取记事本能打开读懂的文件 文本文件
l java.io.reader
l 所有字符输入流的超类
l read() 读取一个字符
l read(char [] c)读取字符数组
l 和字节流就是byte和char的区别
l 没有读取字符串的功能
因为字符串的概念无法确定 单个也就字符串 多个也就字符串
l FileReader
l 构造方法
绑定数据源
l 参数 File类型变量和String文件名
l 示例
可以读取文本文件
l flush刷新完 流还可以用
l close刷新完 流就关闭了
l flush 只有写文本需要用 其他不需要用
示例
l 默认码表 GBK
l
标签:阶乘 操作 nbsp 使用步骤 可扩展 成员变量 读取字符串 不能 创建
原文地址:http://www.cnblogs.com/DMYMaster/p/7258423.html