在上面两篇文章中介绍了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流之其他对象的更多相关文章

  1. Java基础IO流(二)字节流小案例

    JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html ①读取指定文件内容,按照16进制输出到控制台 其中,Integer.to ...

  2. Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)

    Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我已经分享过很多的J ...

  3. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  4. Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)

    Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...

  5. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

  6. Java基础-IO流对象之打印流(PrintStream与PrintWriter)

    Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...

  7. Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)

    Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...

  8. java基础-IO流对象之Properties集合

    java基础-IO流对象之Properties集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Properties集合的特点 Properties类表示了一个持久的属性集. ...

  9. Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)

    Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...

随机推荐

  1. 【JAE】JAE京东云擎部署首个Java应用

    前几天一直在寻找好用并且免费的PaaS最终就发现了国内的京东云擎JAE和国外的Heroku.我首先选择的是Heroku,因为他有一个非常强大的eclipse插件 为开发带来了很大的方便.用它提交后的代 ...

  2. Java 通过代理测试webService接口

    以下代码针是针对电脑是通过代理上网的情况时使用: System.getProperties().put("http.proxyHost", "111.111.11.1&q ...

  3. Java学习_int和Integer的区别+包装类

    1.Java 中的数据类型分为基本数据类型和引用数据类型 int是基本数据类型,Integer是引用数据类型: Ingeter是int的包装类,int的初值为0,Ingeter的初值为null. 2. ...

  4. POST在发送数据的时候使用的是HTTP命令

    防止SQL注入 SQL(结构化查询语言)是基于美国国家标准学会(ANSI)标准,并作为共同的语言与数据库通信.每个数据库系统增加了一些专有功能到基本的ANSI SQL. SQL注入是一门将制作好的SQ ...

  5. ubuntu segmentation fault 段错误

    1.段错误 http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 2.段错误的调试方法 2.1使用printf输出信息 2 ...

  6. UPDATE INNER JOIN 两表联合更新

    UPDATE B_READMETER_HANDWORK INNER JOIN B_READMETER_ORDER_SP ON B_READMETER_HANDWORK.ID = B_READMETER ...

  7. 加快ArcGIS Server创建缓存速度,CachingTools的实例数

    大比例尺的缓存,由于文件非常大,创建非常花费时间,在硬件设备已固定的情况下,调整Caching tools的实例数是加快创建缓存的方法之一. 简单来说:CachingTools的最大并行实例数决定了C ...

  8. asp.net mvc 在视图中获取控制器与动作的名称

    获取 controller 名称: ViewContext.RouteData.Values["controller"].ToString(); 获取 action 名称: Vie ...

  9. HTTPS 协议和原理

    1 HTTPS 协议概述 HTTPS 可以认为是 HTTP + TLS.HTTP 协议大家耳熟能详了,目前大部分 WEB 应用和网站都是使用 HTTP 协议传输的. TLS 是传输层加密协议,它的前身 ...

  10. LeetCode First Unique Character in a String

    原题链接在这里:https://leetcode.com/problems/first-unique-character-in-a-string/ 题目: Given a string, find t ...