IO (三)
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 (三)的更多相关文章
- Java基础---IO(三)--IO包中的其他类
第一讲 对象序列化 一.概述 将堆内存中的对象存入硬盘,保留对象中的数据,称之为对象的持久化(或序列化).使用到的两个类:ObjectInputStream和ObjectOutputStrea ...
- java IO(三):字符流
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Java IO(三) 之 FileInputStream
前言: 对于文件系统中的文件.都能够使用FileInputStream流类以二进制的形式进行读取.可是因为Java本身的定位在JVM之上,没有处理计算机底层的能力.因此一些涉及底层处理的方法都是使用n ...
- Java IO(三)
File File类的常见方法: 1.创建. boolean createNewFile():在指定位置创建文件,如果该文件已经存在,则不创建,返回false.和输出流不一样,输出流对象一建立就创建文 ...
- Java之IO(三)ByteArrayInputStream和ByteArrayOutputStream
转载请注明源出处:http://www.cnblogs.com/lighten/p/6972297.html 1.前言 这组输入输出流比较特殊,一般的流指定都是磁盘IO和网络IO,从文件中读取数据或者 ...
- Java IO(三)--字节流基本使用
I/O流分类: InputStream和Read的子类都有read(),用来读取单个字节或字节数组 OutputStream和write的子类都有write(),用来写入单个字节或字节数组 一般都是通 ...
- 系统学习 Java IO (三)----文件类 File
目录:系统学习 Java IO---- 目录,概览 Java IO API 中的 File 类可以访问基础文件系统. 使用 File 类,可以: 检查文件或目录是否存在. 如果目录不存在,创建一个目录 ...
- Pipe——高性能IO(三)
Pipelines可以替换掉那些丑陋的封装(kludge).变通(workaround)或妥协(compromise)——用一个在框架中设计优雅的专门的解决方案. 敢肯定,下面所覆盖的那些痛点,对于那 ...
- Java当中的IO三
1.处理流的使用实例 bufferedReader(处理流)介绍: buffereReader属于字符流,其次也是处理流,也是输入流,即字符输入处理流 常用方法 readLine() Buffered ...
- linux系统编程之文件与io(三)
上次我们利用文件的read和write来实现了简易的cp命令,其中将源文件拷贝到目标文件时,我们给目标文件的权限是写死的,而非根据源文件的权限生成的,如下: 今天就来解决这个问题,来学习获取文件权限相 ...
随机推荐
- HTTP 首部字段详细介绍
本文是HTTP解析系列第二篇,如果对http协议不是很了解,可以选去看第一篇:带新手走进神秘的HTTP协议,本文主要是对Http的首部字段进行详细解析. HTTP 协议的请求和响应报文中必定包含 HT ...
- HDU--1164
Eddy's research I Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 配置ubuntu网络
第一步:找到ubuntu中的网络标志,点击Edit connection 第二步:点击Add会出来一行配置网络的提示 第三步:选中Wired connectiong 1 然后点击Edit 第四步:选中 ...
- .NET MongoDB Driver GridFS 2.2原理及使用示例
一.API解读 1 GridFSBucketOptions 1)public string BucketName { get; set; } 获取或设置bucket名称 2)public int Ch ...
- bean的作用域 :singleton和prototype
- Spring注解依赖注入的三种方式的优缺点以及优先选择
当我们在使用依赖注入的时候,通常有三种方式: 1.通过构造器来注入: 2.通过setter方法来注入: 3.通过filed变量来注入: 那么他们有什么区别吗?应该选择哪种方式更好? 三种方式的区别小结 ...
- 从零开始学习前端JAVASCRIPT — 3、JavaScript基础string字符串介绍
1:字符串 JS中的任何数据类型都可以当作对象来看.所以string既是基本数据类型,又是对象. 2:声明字符串 基本数据类型:var sStr = '字符串'; 对象的方法:var oStr = n ...
- Windows7下设置定时启动(关闭)虚拟机
曾记否,忆当年,开启或者关闭虚拟机,度秒如年~ ⒈石头,剪刀,布,C.D.E盘随便找一个,然后在里面找个静谧的墙角, 新建一个文件:vmstart.bat 添加:"C:\Program Fi ...
- 短时间内多个请求状态更新,导致react 不能及时响应问题总结
个人总结 这段时间项目中遇到这样一个问题,旧项目中增加了一个聊天对话的模块,这是其他同学负责的部分,因为要有消息提醒,所以做了个轮询.消息提示因为是页头部分,所以每个模块都会引用到.这是背景. 现象 ...
- https和http有什么区别
在URL前加https://前缀表明是用SSL加密的. 你的电脑与服务器之间收发的信息传输将更加安全. Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定. http和h ...