java_IO流
IO流概述及分类
Reader InputStream OutputStream Writer都是Object的直接子类
字节流:
字节输入流 InputStream(抽象类)
|---FileInputStream(子类)
字节输出流 OutputStream(抽象类)
|---FileOutputStream(子类)
字符流:
字符输入流 Reader(抽象类)
|--- FileReader(子类)
字符输出流 Writer(抽象类)
|--- FileWriter(子类)
一.字节输入流FileInputStream
注意:java中所有输入流在构造时文件必须存在,否则抛出异常
构造方法:
FileInputStream is=new FileInputStream(File file);
FileInputStream is=new FileInputStream(String path);
常用读取方法:
read() 返回值为int数值,含义是通过read方法读取的一个字节根据ascll码表转换成int类型数字
read(byte[] byte) :读取文件,到byte数组中,返回值为int类型,表示读取的字节数目
二.字节输出流FileOutputStream
注意:无论是字符输出流还是字节输入流,创建流对象如果没设置附加的话就会清空文件
FileOutputStream os=new FileOutputStream(File file);
FileOutputStream os=new FileOutputStream(String path);
FileOutputStream os=new FileOutputStream(File file,Boolean append);
FileOutputStream os=new FileOutputStream(String path,Boolean append);
常用输出方法:
write(byte[]byte)
write(byte[] byte,int off,int len)
write(int n);
三.字符流概述
1).为什么要有“字符流”:“字节流”按“字节”来操作文件,但各国使用的字符所占的字节数不同,有些占一个字节,
有些占2个字节,有些占3个字节,所以如果使用“字节流”来操作这种纯文本文件,非常不方便。所以Java又制作
了“字符流”--可以按“字符”读、写,不论这个字符占几个字节,“字符流”都会保证能够完整的读取一个字符。
2).“字符流”也是基于“字节流”;
3).“字符流”的作用:只能操作“纯文本文件”;
四.字符输出流Writer
1).write(int c):输出一个字符;
2).write(char[] chArray):输出一个字符数组;
3).write(char[] chArray,int off,int len):输出字符数组的一部分;
4).write(String str):输出一个字符串;
5).write(String str,int off,int len):输出字符串的一部分;
使用它的子类:FileWriter
1).追加写入:使用构造方法,第二个参数为:true
FileWriter(String name,boolean append):
FileWriter(File name,boolean append)
2).输出换行:
out.write("\r\n");
五.字符输入流Reader
1).读取的方法(两个)
1).int read():读取一个“字符”; 返回值为这个字符对应的数字
2).int read(char[] chArray):读取一个“字符数组”; 返回值为读取字符的个数
六.IO异常的处理_JDK7前的处理方式
public class Demo {
public static void main(String[] args) {
FileWriter out = null;
try {
out = new FileWriter("demo07.txt");
out.write("呵呵");
} catch (IOException e) {
e.printStackTrace();
}finally {
if(out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
七.IO异常的处理_JDK7后的处理方式
注意:使用jdk7之后版本的try可以不用关闭流,jvm会自动关闭
try后的小括号中可以写多句话,中间用分号隔开
注意:try中内容最好不要有匿名内部类,因为try不会自动关闭
public class Demo {
public static void main(String[] args) {
try (FileWriter out = new FileWriter("demo08.txt")) {
out.write("喜喜");
} catch (IOException e) {
}
//当try...catch语句执行完毕,out会自动关闭
}
}
八.属性集_Properties类概述
1).java.util.Properties(类):它本质上是一个Map集合。它有两个方法可以结合IO流,很方便的操作“配置文件”。
2).什么是“配置文件”:指软件运行时,需要记录一些用户的、软件的一些配置信息,它是纯文本文件,通用格式:
test.properties
------------------------------------------
金币=100000
钻石=5000
点券=1000
疲劳=120
注意:配置文件中数据的格式:名=值,这种格式正好跟我们的"键值对--Map"的结构匹配。
所以Java单独做了一个Map集合,目的就是可以结合IO流很方便的读写这种配置文件。
九.属性集_Properties类与流相关的方法介绍
Properties继承自Hashtable,包含操作map的几乎所有方法,也有它自己独有的方法,
java.util.Properties是针对于配置文件的一个类,只能操作字符串,无论是key还是value
1).写:store(FileWriter out,String com)
2).读:load(FileReader in)
示例代码:
public class Demo {
public static void main(String[] args) {
// writeFile();
readFile();
}
private static void readFile() {
Properties pro = new Properties();
try (FileReader in = new FileReader("demo09.txt")) {
pro.load(in);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//遍历
Set<String> keys = pro.stringPropertyNames();//相当于:Map-->keySet()
for (String k : keys) {
System.out.println(k + "," + pro.getProperty(k));//相当于:Map--get(Object key)
}
}
public static void writeFile(){
Properties pro = new Properties();
pro.setProperty("金币", "10000");//相当于Map--put(Object key,Object value)
pro.setProperty("钻石", "5000");
pro.setProperty("疲劳", "120");
pro.setProperty("点券", "3000");
//存储到文件
try (FileWriter out = new FileWriter("demo09.txt")) {
pro.store(out, "Hello");
} catch (IOException e) {
e.printStackTrace();
}
}
}
java_IO流的更多相关文章
- Java_IO流_File类配合使用(其中用到了递归)
第一:Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.以下对Java File文件操作以及常用方法进行简单介绍 案例1:遍历出指定目录下的文件夹,并输出文件名 stat ...
- java_IO流小结
字符流和字节流的主要区别: 1.字节流读取的时候,读到一个字节就返回一个字节: 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时.先去查指定的编码表,将 ...
- java_IO流之 NIO
NIO 定义 即新IO,在JDK1.4的java.nio.*包中引入,其目的在于提高速度. 在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生 ...
- Java_IO流_抽象类
一. 概念 流动,从一端流向另一端,源头与目的地 以程序为中心,程序与 数组/文件/网络连接/数据库, 二. io流分类 流向:输入流与输出流 数据 :字节楼:二进制,所有文件都可以操作,包括 ...
- Java_IO流输入输出
第三章 输入输出 一.I/O Input/Output 二.File 用途:对文件和目录进行常规操作(除文件读写操作外). 方法:exists():判断文件或目录是否存在 isFile():判断是否是 ...
- Java_IO流实验
实验题目链接:Java第09次实验(IO流) 0. 字节流与二进制文件 我的代码 package experiment.io; import java.io.DataInputStream; impo ...
- java_IO流(输入流)
* 字节输入流(InputStream):所有字节输入流的父类 * 所有子类共性方法: * int read():从输入流中读取数据的下一个字节 * int read(byte[] b):从输入流中拂 ...
- java_IO流(输出流)
** * io流: * 输入流:硬盘输入到内存 字节/字符输入流 * 输出流:内存输出到硬盘 字节/字符输入流 * 字节流:一切数据都是字节存储(二进制) * 字节输出流(OutputStream): ...
- java_IO流读取本地文件
package com.ht.util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoun ...
随机推荐
- Redis in .NET Core 入门:(5) Sorted SET
第1篇:https://www.cnblogs.com/cgzl/p/10294175.html 第2篇 String:https://www.cnblogs.com/cgzl/p/10297565. ...
- asp.net core系列 49 Identity 授权(上)
一.概述 授权是指用户能够访问资源的权限,如页面数据的查看.编辑.新增.删除.导出.下载等权限.ASP.NET Core 授权提供了多种且灵活的方式,包括:Razor pages授权约定.简单授权.R ...
- Mybaits-plus实战(二)
1. Mybaits-plus实战(二) 1.1. mybatis-plus插件 1.1.1. 用法 先举个例子介绍用法,如下:直接作为Bean注入,一般来讲插件太多印象性能,所以大部分插件都只在测试 ...
- Windows 下安装RabbitMQ服务器及基本配置
RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...
- 使用StackExchange.Redis 连接redis的pipeline命令使用
这几天公司老项目用到了这个组件,需要设置初始化ID,发现这个组件没有pipeline命令的方法,去官方文档去瞅了一波,发现也没有给出对应的解决方案,后面自己发现组件里面其实有 其实就是这个接口的一个方 ...
- iOS 11: CORE ML—浅析
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/OWD5UEiVu5JpYArcd2H9ig 作者:l ...
- 49个Spring经典面试题总结,附带答案,赶紧收藏
1. 一般问题 1.1. 不同版本的 Spring Framework 有哪些主要功能? Version Feature Spring 2.5 发布于 2007 年.这是第一个支持注解的版本. Spr ...
- Flarum轻量级论坛的安装
论坛作为互联网中的远古产物,经历了如QQ群.社区和贴吧等新兴社交工具的冲击,依然能够存在,肯定是有着不可替代的用处,像吾爱.远景等论坛依旧火热.一些博客主也喜欢自己搭建一个论坛作为用户聚集之地. 之前 ...
- springboot项目上传文件出现临时文件目录为空
最近写文件上传到服务器读取的代码,前端使用FormData上传,服务端用MultipartFile接收,自己测试了下MultipartFile对象有什么东西,结果一般属性都能出来,测试getInput ...
- 线性回归预测PM2.5----台大李宏毅机器学习作业1(HW1)
一.作业说明 给定训练集train.csv,要求根据前9个小时的空气监测情况预测第10个小时的PM2.5含量. 训练集介绍: (1)CSV文件,包含台湾丰原地区240天的气象观测资料(取每个月前20天 ...