1 转换流

1.1 InputStreamReader

1.1.1 InputStreamReader简介

  • InputStreamReader是字节流通向字符流的桥梁。它使用指定的charset读取字节并将其解码为字符,它使用的字符集可以由名称指定或显示给定,或者可以接收平台默认的字符集。

1.1.2 InputStreamReader构造方法

  • 创建一个使用默认字符集的InputStreamReader
public InputStreamReader(InputStream in)
  • 创建使用给定字符集的InputStreamReader
public InputStreamReader(InputStream in,Charset cs)
  • 创建使用给定字符集解码器的InputStreamReader
public InputStreamReader(InputStream in,CharsetDecoder dec)
  • 创建使用指定字符集的InputStreamReader
public InputStreamReader(InputStream in,String charsetName) throws UnsupportedEncodingException

1.1.3 方法

  • 关闭该流并释放与之关联的所有资源
public void close() throws IOException
  • 返回此流使用的字符编码的名称
public String getEncoding()
  • 读取单个字符
public int read() throws IOException
  • 将字符读入数组中的一部分
public int read(char[] cbuf,int offset, int length) throws IOException
  • 判断此流是否已经准备好用于读取
public boolean ready() throws IOException

1.3.4 示例

  • 示例
package java20;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * 2017/10/14
 * 说明:
 */
public class InputStreamReaderDemo {
    public static void main(String[] args) {
        //标准字节输入流
        InputStream is = System.in;

        //将标准字节输入流 --> 字符流  解码
        InputStreamReader isr = new InputStreamReader(is);

        //将转换流 --> 缓冲流
        BufferedReader br = new BufferedReader(isr);

    }
}

1.2 OutputStreamWriter

1.2.1 OutputStreamWriter简介

  • OutputStreamWriter是字符流通向字节流的桥梁。可以使用指定charset将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显示给定,否则将接受平台默认的字符集。

1.2.2 构造方法

  • 创建使用默认字符编码的OutputStreamWriter
public OutputStreamWriter(OutputStream out)
  • 创建使用给定字符集的OutputStreamWriter
public OutputStreamWriter(OutputStream out,Charset cs)
  • 创建使用给定字符集编码器的OutputStreamWirter
public OutputStreamWriter(OutputStream out,CharsetEncoder enc)
  • 创建使用指定字符集的OutputStreamWriter
public OutputStreamWriter(OutputStream out,String charsetName) throws UnsupportedEncodingException

1.2.3 方法

  • 关闭此流,但要先刷新它
public void close() throws IOException
  • 刷新该流的缓冲
public void flush() throws IOException
  • 返回此流使用的字符编码的名称
public String getEncoding()
  • 写入字符数组的一部分
public void write(char[] cbuf, int off, int len) throws IOException
  • 写入单个字符
public void write(int c) throws IOException
  • 写入字符串的一部分
public void write(String str, int off, int len) throws IOException

1.2.4 示例

  • 示例
package java20;

import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

/**
 * 2017/10/14
 * 说明:
 */
public class OutputStreamWriterDemo {
    public static void main(String[] args) {
        //获取字节输出流
        OutputStream os = System.out;
        //将字符流-->字节流  编码
        OutputStreamWriter osw = new OutputStreamWriter(os);
        //使用缓冲流进行包装
        BufferedWriter bw = new BufferedWriter(osw);
    }
}

2 流的操作规律

2.1 为什么要知道流的操作规律

  • 因为java的流太多,不知道使用哪个流

2.2 四个明确

2.2.1 明确源和目的

  • 源:

    • InputStream
    • Reader
  • 目的:
    • OutputStream
    • Writer  

2.2.2 明确数据是否是纯文本数据

    • 纯文本:Reader
    • 不是纯文本:InputStream
  • 目的
    • 纯文本:Writer
    • 不是纯文本:OutputStream    

2.2.3 明确具体的设备

  • 源设备:

    • 硬盘:

      • FileInputStream
      • FileReader  
    • 键盘:
      • System.in  
    • 内存:数组
    • 网络:Socket  
  • 目的设备
    • 硬盘:

      • FileWriter
      • FileOutputStream  
    • 控制台:System.out
    • 内存:数组
    • 网络:Socket流  

2.2.4 是否需要其他额外功能

  • ①是否需要缓冲区

3 File

3.1 File类简介

  • 用来将文件或者文件夹封装成对象。
  • 方便对文件与文件夹的属性信息进行操作。
  • File对象可以作为参数传递给流的构造函数。

3.2 File的构造方法及字段

3.2.1 构造方法

  • 根据parent抽象路径名和child路径名字符串创建一个新的File实例
public File(File parent,String child)
  • 通过将给定路径名字符串转换为抽象路径名来创建一个新的File实例
public File(String pathname)
  • 根据parent路径名字符串和child路径名字符串创建一个新File实例
public File(String parent, String child)

3.2.2 字段

  • 与系统有关的默认名称分隔符,为了表示方便,它被表示为一个字符串
public static final String separator

3.2.3 示例

  • 示例:创建File实例对象
package java20;

import java.io.File;

/**
 * 2017/10/14
 * 说明:
 */
public class FileDemo {
    public static void main(String[] args) {
        File f1 = new File("c:\\demo.txt");

        File f2 = new File("c:\\abc","demo.txt");

        File f3 = new File(new File("c:\\abc\\abc"),"demo.txt");
    }
}
  • 示例:File.Separator
package java20;

import java.io.File;

/**
 * 2017/10/14
 * 说明:
 */
public class FileDemo {
    public static void main(String[] args) {
        System.out.println(File.separator);
    }
}

3.3 File常用方法

3.3.1 获取

  • 获取文件或目录的名称
public String getName()
  • 获取文件路径
public String getAbsolutePath()
  • 获取文件的长度
public long length()
  • 获取文件修改时间
public long lastModified()
  • 获取父目录的抽象路径名
public String getParent()
  • 获取指定目录下的所有文件
public File[] listFiles()
  • 示例:
package java20;

import java.io.File;

/**
 * 2017/10/14
 * 说明:
 */
public class FileDemo {
    public static void main(String[] args) {
        File file = new File("demo.txt");

        String filename = file.getName();

        System.out.println("文件名:"+filename);

    }
}

  • 示例:
package java20;

import java.io.File;

/**
 * 2017/10/14
 * 说明:
 */
public class FileDemo {
    public static void main(String[] args) {
        File file = new File("demo.txt");

        String absolutePath = file.getAbsolutePath();

        System.out.println("绝对路径:"+absolutePath);

    }
}

  • 示例:
package java20;

import java.io.File;

/**
 * 2017/10/14
 * 说明:
 */
public class FileDemo {
    public static void main(String[] args) {
        File file = new File("D:\\code\\java基础\\demo.txt");

        long length = file.length();

        System.out.println("文件长度:"+length);

    }
}

  • 示例:
package java20;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 2017/10/14
 * 说明:
 */
public class FileDemo {
    public static void main(String[] args) {
        File file = new File("D:\\code\\java基础\\demo.txt");

        long time = file.lastModified();

        System.out.println("最后修改时间:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS").format(new Date(time)));

    }
}

  • 示例:
package java20;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 2017/10/14
 * 说明:
 */
public class FileDemo {
    public static void main(String[] args) {
        File file = new File("D:\\code\\java基础\\demo.txt");

        String parent = file.getParent();

        System.out.println("父目录的路径:"+parent);

    }
}

3.3.2 创建和删除

  • 创建新文件
public boolean createNewFile() throws IOException
  • 删除文件或空目录
public boolean delete()
  • 创建目录
public boolean mkdir()
  • 创建目录(包括父目录)
public boolean mkdirs()

3.3.3 判断

  • 判断文件或目录不存在
public boolean exists()
  • 判断是否是文件
public boolean isFile()
  • 判断是否是目录
public boolean isDirectory()
  • 判断是否是隐藏文件
public boolean isHidden()

3.3.4 过滤器

  • 过滤文件
public File[] listFiles(FileFilter filter)

IO (三)的更多相关文章

  1. Java基础---IO(三)--IO包中的其他类

    第一讲     对象序列化 一.概述 将堆内存中的对象存入硬盘,保留对象中的数据,称之为对象的持久化(或序列化).使用到的两个类:ObjectInputStream和ObjectOutputStrea ...

  2. java IO(三):字符流

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  3. Java IO(三) 之 FileInputStream

    前言: 对于文件系统中的文件.都能够使用FileInputStream流类以二进制的形式进行读取.可是因为Java本身的定位在JVM之上,没有处理计算机底层的能力.因此一些涉及底层处理的方法都是使用n ...

  4. Java IO(三)

    File File类的常见方法: 1.创建. boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false.和输出流不一样,输出流对象一建立就创建文 ...

  5. Java之IO(三)ByteArrayInputStream和ByteArrayOutputStream

    转载请注明源出处:http://www.cnblogs.com/lighten/p/6972297.html 1.前言 这组输入输出流比较特殊,一般的流指定都是磁盘IO和网络IO,从文件中读取数据或者 ...

  6. Java IO(三)--字节流基本使用

    I/O流分类: InputStream和Read的子类都有read(),用来读取单个字节或字节数组 OutputStream和write的子类都有write(),用来写入单个字节或字节数组 一般都是通 ...

  7. 系统学习 Java IO (三)----文件类 File

    目录:系统学习 Java IO---- 目录,概览 Java IO API 中的 File 类可以访问基础文件系统. 使用 File 类,可以: 检查文件或目录是否存在. 如果目录不存在,创建一个目录 ...

  8. Pipe——高性能IO(三)

    Pipelines可以替换掉那些丑陋的封装(kludge).变通(workaround)或妥协(compromise)——用一个在框架中设计优雅的专门的解决方案. 敢肯定,下面所覆盖的那些痛点,对于那 ...

  9. Java当中的IO三

    1.处理流的使用实例 bufferedReader(处理流)介绍: buffereReader属于字符流,其次也是处理流,也是输入流,即字符输入处理流 常用方法 readLine() Buffered ...

  10. linux系统编程之文件与io(三)

    上次我们利用文件的read和write来实现了简易的cp命令,其中将源文件拷贝到目标文件时,我们给目标文件的权限是写死的,而非根据源文件的权限生成的,如下: 今天就来解决这个问题,来学习获取文件权限相 ...

随机推荐

  1. 【CentOS】阿里云ECS申请CA证书配置SSL

    本文记录阿里云ECS申请CA证书流程先到阿里云控制台找到CA证书服务,这里两台ECS都已经申请签发了证书,如果是还没申请的就在"状态"中点击补全: 进去后填写完个人信息后,这里选择 ...

  2. 一个通用的Makefile(二)

    1.各级子目录的Makefile: obj-y += file.o obj-y += subdir/ “obj-y += file.o” 表示把当前目录下的file.c编进程序里. “obj-y += ...

  3. Java Web应用集成OSGI

    对OSGI的简单理解 就像Java Web应用程序需要运行在Tomcat.Weblogic这样的容器中一样.程序员开发的OSGI程序包也需要运行在OSGI容器中.目前主流的OSGI容器包括:Apach ...

  4. BZOJ 2748: [HAOI2012]音量调节【二维dp,枚举】

    2748: [HAOI2012]音量调节 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2010  Solved: 1260[Submit][Statu ...

  5. 搬寝室(经典dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1421 hdu_1421:搬寝室 Time Limit: 2000/1000 MS (Java/Othe ...

  6. 将id传过去,根据id显示下面的详情页面

    官方demo:http://dev.dcloud.net.cn/mui/event/ 假设如下场景:从新闻列表页面进入新闻详情页面,新闻详情页面为共用页面,通过传递新闻ID通知详情页面需要显示具体哪个 ...

  7. 如何在SecureCRT中给linux上传和下载文件 安装redis

    首先建立文件 /download sz和rz命令无法用.则用以下1.和2.3步骤   需要上传或者下载,需要使用rz和sz命令.如果linux上没有这两个命令工具,则需要先安装.可以使用yum安装.运 ...

  8. yum指令

    接上个教程,如果用yum list 命名,运行后出现如下结果:则正确搭建了环境 如 yum search httpd 搜索apache的包 安装gcc ,是c语言的编译器 注意:LANG是临时改变的. ...

  9. [国嵌攻略][045-046][一跃进入C大门]

    [一跃进入C大门] 跳转方式 1.相对跳转:b或bl指令,通过计算两个地址之间的差值来给pc赋值相对跳转 2.绝对跳转:ldr指令,通过给pc直接赋值,完成绝对跳转 代码编写 1.在汇编代码中直接使用 ...

  10. spring boot容器启动详解

    目录 一.前言 二.容器启动 三.总结 =======正文分割线====== 一.前言 spring cloud大行其道的当下,如果不了解基本原理那么是很纠结的(看见的都是约定大于配置,但是原理呢?为 ...