二十、Java基础--------IO流之其他对象
在上面两篇文章中介绍了IO体系并详细介绍了字节流以及字符流,本文主要是讲述操作文件的File、转化流、标准输入与输出、Properties、打印流以及序列流。
File
File英文为"文件"的意识,正如其意识所表达的一样,File代表的是对磁盘文件对象,File中封装了对文件操作的一些方法,例如创建.删除.重命名文件等操作。File类是对象主要用来获取未文件本身的一些信息,如文件所在的目录、文件的长度、文件的读写权限等。File对象可以作为参数传递给流的构造函数。
构造方法:
|--File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
|--File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。
|--File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。
|--File(URI uri)
通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例。
常见方法
1.创建
boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false。
boolean mkdir():创建文件夹。
boolean mkdirs():创建多级文件夹。
注:File类创建文件的方法createNewFile()与输出流的方法不同点:
File类通过createNewFile方法来创建文件的话,如果文件存在则不创建
输出流是对象一建立就创建文件,如果文件存在就会覆盖原文件。
2.删除
boolean delete():删除失败返回false。如果文件正在被使用,则删除不了返回falsel。
void deleteOnExit():在程序退出时删除指定文件。
3.判断
boolean exists():文件或目录是否存在。
boolean isFile():是否是一个标准文件。
boolean isDirectory():是否是一个目录。
boolean isHidden():是否是一个隐藏文件。
boolean isAbsolute():是否为绝对路径名。
boolean canRead()是否可读
boolean canWrite()是否可写
4.获取
String getName():返回由此抽象路径名表示的文件或目录的名称。
String getPath():获取相对路径
String getParent():获取父级目录,如果此路径名没有指定父目录,则返回 null。
String getAbsolutePath():获取绝对路径
long lastModified():返回此抽象路径名表示的文件最后一次被修改的时间。
long length():返回由此抽象路径名表示的文件的长度.
static File[] listRoots():列出系统的可用的根
String[] list():获取指定目录下的所有文件和文件夹的名称数组
File[] listFiles():获取指定目录下的所有文件和文件夹的File数组
5.修改
boolean renameTo(File dest):重新命名此抽象路径名表示的文件。
转换流
IO流分为字节流与字符流,但是如何实现字节流与字符流之间的转化呢?这就要使用到下面所讲的内容了。
InputStreamReader
字节流转化为字符流的桥梁,它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。
构造方法:
InputStreamReader(InputStream in)
InputStreamReader(InputStream in, String charsetName)
示例:BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
OutputSteamWriter
字符流通向字节流的桥梁可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器。为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。
构造方法:
OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out, String charsetName)
应用示范
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
System.in 默认设备为键盘
标准输入与输出
System类中的字段:in,out,它们各代表了系统标准的输入和输出设备,默认输入设备是键盘,输出设备是显示器。
System.in的类型是InputStream.
System.out的类型是PrintStream
Properties类
Properties是hashtable的子类,也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。
是集合中和IO技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件,那么在加载数据时,需要数据有固定格式:键=值。
构造方法:
|--Properties():创建一个无默认值的空属性列表。
|--Properties(Properties defaults):创建一个带有指定默认值的空属性列表。
常用方法:
|--Object setProperty(String key,String value)
调用Hashtable的put方法,设置键值对
|--String getProperty(String key)
用指定的键在此属性列表中搜索属性
|--Set<String> stringPropertyNames
获取集合中所有的键
|--void load(InputStream in)
从输入流中读取属性列表(键和元素对)。
|--void load(Reader reader)
按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
|--void list(PrintStream out)
将属性列表输出到指定的输出流。
|--void list(PrintWriter out)
将属性列表输出到指定的输出流。
|--void Store(OutputStream out,String comments)
以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
|--void store(Writer writer, String comments)
以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。
打印流
可以直接操作输入流和文件,该流提供了打印方法,可以将各种数据类型的数据都原样打印。
字节打印流:PrintStream
构造函数可以接收的参数类型:
1.file对象:File
2.字符串路径:String
3.字节输出流:OutputStream
字符打印流:PrintWriter
构造函数可以接收的参数类型:
1.file对象:File
2.字符串路径:String
3.字节输出流:OutputStream
4.字符输出流:Writer
注:与其他输出流不同,PrintStream 永远不会抛出IOException,而且打印流可以根据指定编码转成字符!
二十、Java基础--------IO流之其他对象的更多相关文章
- Java基础IO流(二)字节流小案例
JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html ①读取指定文件内容,按照16进制输出到控制台 其中,Integer.to ...
- Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)
Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我已经分享过很多的J ...
- Java基础-IO流对象之随机访问文件(RandomAccessFile)
Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...
- Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)
Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...
- Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)
Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...
- Java基础-IO流对象之打印流(PrintStream与PrintWriter)
Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...
- Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)
Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...
- java基础-IO流对象之Properties集合
java基础-IO流对象之Properties集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Properties集合的特点 Properties类表示了一个持久的属性集. ...
- Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)
Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...
随机推荐
- UI--UIPickerView和UIDatePicker的总结
回到顶部 UIPickerView的主要方法和城市选择器的修正 UIPickerView只有两个数据源方法.要想完整地显示出PickerView,需要结合使用代理方法 数据源方法: // 一共有多少组 ...
- javascript 减少回流
减少回流(REFLOWS) 当浏览器重新渲染文档中的元素时需要 重新计算它们的位置和几何形状,我们称之为回流.回流会阻塞用户在浏览器中的操作,因此理解提升回流时间是非常有帮助的. 回流时间图表 你应该 ...
- PHPExcel中文开发手册翻译版(1)
请注意这个是粗翻译版,仅供参考,不是精校版 精校版后面才会更新 英文原版在线文档 https://github.com/PHPOffice/PHPExcel/wiki/User%20Documenta ...
- Java命令行解析:apache commons-cli
http://commons.apache.org/proper/commons-cli/usage.html Apache Commons CLI用于解析命令行选项,也可以输出详细的选项说明信息. ...
- TweenMax学习一
TweenMaxjs是一个性能很高的js动画框架,它与css3动画具有时间轴的概念.你可以很方便的把动画添加到一个时间轴队列里面去按照你需要的顺序去执行. 官网地址: http://greensock ...
- DataTable数据赋值给Model通用方法
注:该文属本人原创,今后项目中发现该方法存在BUG会实时更新,转载记得附上原文出处,方便大家获得最新代码. 相信大家在做项目中,经常会根据不同的表new各种不同的Model,当需要对Model进行实例 ...
- 级联两个bootstrap-table。一张表显示相关的数据,通过点击这张表的某一行,传过去对应的ID,刷新另外一张表。
二张表的代码(我用的插件,大家可以去网上直接下载http://issues.wenzhixin.net.cn/bootstrap-table/): <div class="contai ...
- 微信小程序(应用号)资源汇总整理
微信小应用资源汇总整理 开源项目 WeApp - 微信小程序版的微信 wechat-weapp-redux-todos - 微信小程序集成Redux实现的Todo list wechat-weapp- ...
- cocos2d学习记录
视频 - http://www.manew.com/forum-105-3.html一个论坛帖 - http://www.zhihu.com/question/21114802官网 - http:// ...
- socket编程进阶
1. 动态导入模块 第一种方法(python解释器自己内部用的): 上图是我程序的目录结构 下面代码是动态导入模块3.py的源码: #AUTHOR:FAN lib_dir = __import__ ...