黑马程序员---Java基础---字节流和字符流
来源:互联网 发布:php员工管理系统源代码 编辑:程序博客网 时间:2024/06/10 06:15
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
一、字节流
1、IO流概述:
IO流用来处理设备之间的数据传输,上传文件和下载文件
Java对数据的操作是通过流的方式
Java用于操作流的对象都在IO包中
2、IO流分类:
按照数据流向
输入流 读入数据
输出流 写出数据
按照数据类型
字节流
字符流
3、IO流的层次结构
字节流:可以操作二进制文件、文本文件
1).输出流:OutputStream(抽象类)
FileOutputStream(类):
2).输入流:InputStream(抽象类)
FileInputStream(类):
字符流:只能操作文本文件
1).输出流:Writer(抽象类)
2).输入流:Reader(抽象类)
二、字节流
1、字节输出流 FileOutputStream
构造方法:文件可以不存在,会自动创建
FileOutputStream(String fileName) :创建一个向具有指定名称的文件中写入数据的输出文件流。
FileOutputStream(File file) : 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(String name, boolean append) 创建一个向具有指定 name 的文件中写入数据的输出文件流。
FileOutputStream(File file, boolean append)创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
输出的方法:
write(int n):输出一个字节;
write(byte[] b):输出一个字节数组;
write(byte[] b,int off,int len):输出一个字节数组的一部分;
成员方法
close():关闭流
package cn.hebei.sjz_字节输出流;import java.io.File;import java.io.FileOutputStream;/* * FileOutputStream构造方法 */public class Demo {public static void main(String[] args) {try {// 构造方法1FileOutputStream out = new FileOutputStream("demo3.txt");// 构造方法2// File file = new File("demo.txt");// FileOutputStream out = new FileOutputStream(file);// 构造方法3FileOutputStream out2 = new FileOutputStream("demo2.txt", true);// 构造方式4// File file = new File("demo2.txt");// FileOutputStream out2 = new FileOutputStream(file,true);// 输出一个字节out.write(97);//a// 追加写入out2.write("你好".getBytes());out2.write("我好".getBytes());out2.write("\r\n".getBytes());// 输出一个字节数组byte[] byteArray = { 97, 98, 99 };out.write(byteArray);// 输出字节数组的一部分out.write(byteArray, 1, 2);// 输出字符串out.write("我是谁".getBytes());// 释放资源out.close();out2.close();} catch (Exception e) {e.printStackTrace();}}}
构造方法:文件必须存在,否则运行时异常;
FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
FileInputStream(File file) :通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
读取的方法:
int read():读取一个字节
int read(byte[] byteArray):读取若干个字节,填充参数的byte[]数组;
package cn.hebei.sjz_字节输入流;import java.io.File;import java.io.FileInputStream;/* * 字节输入流 FileInputStream */public class Demo {public static void main(String[] args) {try {// 构造方法1FileInputStream in = new FileInputStream("demo3.txt");// 构造方法2// File file = new File("demo2.txt");// FileInputStream in = new FileInputStream(file);// 一次读取一个字节/* * int n = in.read(); while (n != -1) { System.out.println("读取的字节" + * n); System.out.println("转换为字符" + (char)n); n = in.read(); */// 另一种写法/*int n = 0;while ((n = in.read()) != -1) {System.out.println("读取的字符" + (char) n);}*///一次读取一个字节数组byte[] byteArray = new byte[4];int n = in.read(byteArray);while(n != -1){System.out.println("读取的内容:" + new String(byteArray,0,n));n = in.read(byteArray);}//第二种常用的遍历方法/*byte[] byteArray = new byte[4];int n = 0;while((n = in.read(byteArray)) != -1){System.out.println("读取的内容:" + new String(byteArray,0,n));}*/// 释放资源in.close();} catch (Exception e) {e.printStackTrace();}}}
1、BufferedOutputStream(类--缓冲字节输出流):
构造方法:
BufferedOutputStream(OutputStream out) :
输出的方法:
无特有的,都是继承的:三种输出的方法
2、BufferedInputStream(类--缓冲字节输入流):
构造方法:
BufferedInputStream(InputStream in):
读取的方法:
无特有的,都是继承的:两种读取的方法
package cn.hebei.sjz_缓冲流;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/* * 缓冲输出字节流BufferedOutputStream * 缓冲输入字节流BufferedInputStream */public class Demo {public static void main(String[] args) throws IOException {// 缓冲输出字节流BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("demo2.txt"));out.write("nihao".getBytes());out.write("wohao".getBytes());out.close();// 缓冲输入字节流BufferedInputStream in = new BufferedInputStream(new FileInputStream("demo2.txt"));// 一次读取一个字节/* * int n = 0; while ((n = in.read()) != -1) { System.out.println("读取的字节" * + n); } */// 一次读取一个字节数组byte[] byteArray = new byte[1024];int n = 0;while ((n = in.read(byteArray)) != -1) {System.out.println(new String(byteArray, 0, n));}in.close();}}
字符输出流 OutputStreamWriter(类--转换流):是字符流通向字节流的桥梁
构造方法:
OutputStreamWriter(OutputStream s):使用平台默认字符集
输出的方法(五种):
字符输入流 InputStreamReader(类--转换流):是字节流通向字符流的桥梁1).write(int n):输出一个字符
2).write(char[] c):输出一个字符数组
3).write(char[] c ,int off, int len):输出字符数组的一部分;
4).write(String str):输出一个字符串
5).write(String str,int off, int len):输出字符串的一部分;
构造方法:
InputStreamReader(InputStream in):使用平台默认字符集
读取的方法(两个):
int read():读取一个字符:返回值:读取的"字符"
int read(char[] c):读取一个字符数组;返回值:读取的"字符数量"
package cn.hebei.sjz_字符转换流;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;/* * 字符转换输出流 OutputStreamWriter * 字符转换输入流 InputStreamReader */public class Demo {public static void main(String[] args) throws IOException {// 字符输出流OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("demo2.txt"));// 输出一个字符out.write('a');// 输出一个字符数组char[] charArray = { 'a', 'b', 'c' };out.write(charArray);// 输出一个字符数组的一部分out.write(charArray, 1, 2);// 输出一个字符串out.write("zheshishui");// 输出一个字符串的一部分String s = "zheshiwo";out.write(s, 2, 2);out.close();// 字符输入流InputStreamReader in = new InputStreamReader(new FileInputStream("demo2.txt"));/* * int n = 0; while ((n = in.read()) != -1) { System.out.println(n); } */char[] charArray1 = new char[2];int n = 0;while ((n = in.read(charArray1)) != -1) {for (char c : charArray1) {System.out.println(c);}}}}
FileWriter(类--纯字符流):
构造方法:
1).FileWriter(File file)根据给定的 File 对象构造一个 FileWriter 对象。
2).FileWriter(File file, boolean append) 根据给定的 File 对象构造一个 FileWriter 对象。
3).FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象。
4).FileWriter(String fileName, boolean append) 根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
输出的方法:
无特有方法,都是继承:五种
FileReader(类--纯字符流):
构造方法:
1).FileReader(File file) 在给定从中读取数据的 File 的情况下创建一个新 FileReader。
2).FileReader(String fileName) 在给定从中读取数据的文件名的情况下创建一个新 FileReader
读取的方法:
无特有方法,都是继承:两种
package cn.hebei.sjz_字符流;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/* * 字符流复制文件 */public class Demo {public static void main(String[] args) throws IOException {FileReader in = new FileReader("Demo.txt");FileWriter out = new FileWriter("Demo_copy.txt");//一次写一个字符/*int n = 0;while((n = in.read()) != -1){out.write(n);}*///一次写一个字符数组char[] charArray = new char[1024];int n1 = 0;while((n1 = in.read(charArray)) != -1){out.write(charArray,0,n1);}in.close();out.close();System.out.println("程序结束");}}
BufferedWriter(字符流--缓冲流):
构造方法:
BufferedWriter(Writer out):创建一个使用默认大小输出缓冲区的缓冲字符输出流。
输出方法:
无特有方法,都是从父类继承的:五种
特有成员方法:
void newLine():输出一个换行符;
BufferedReader(字符流--缓冲流):
构造方法:
BufferedReader(Reader in) :创建一个使用默认大小输入缓冲区的缓冲字符输入流。
读取的方法:
继承父类:两种
String readLine():读取一行数据(不读取换行符)
<pre name="code" class="java">package cn.hebei.sjz_字符缓冲流;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;/* * 字符缓冲流 */public class Demo {public static void main(String[] args) throws IOException {// 使用缓冲流复制文件BufferedReader in = new BufferedReader(new FileReader("demo2.txt"));// 输出流BufferedWriter out = new BufferedWriter(new FileWriter("demo2.txt"));// 一次写一个字符int n = 0;while ((n = in.read()) != -1) {out.write(n);}// 一次读写一个字符数组char[] charArray = new char[1024];int len = 0;while ((len = in.read(charArray)) != -1) {out.write(charArray, 0, len);}// 一次读写一行String row = null;while ((row = in.readLine()) != null) {out.write(row);out.newLine();// 换行符}in.close();out.close();}}
- 黑马程序员---Java基础---字节流和字符流
- 黑马程序员——Java基础------IO流之字符流、字节流和缓冲区。
- 黑马程序员-java基础-IO流中的字节流和字符流
- 黑马程序员---java基础之IO(字符流和字节流)
- 黑马程序员-java基础 io字节流
- 黑马程序员——Java语言基础——07.IO流(1)字符流和字节流
- 黑马程序员——java基础IO流概述、字符流、字节流、流操作规律
- 黑马程序员——Java基础---IO流概述、字符流、字节流、流操作规律
- 黑马程序员《java基础总结(十一)》(IO流<字符流、字节流>)
- 黑马程序员——java基础——IO--字节流,字符流
- 黑马程序员——Java基础----IO(概述、字符流、字节流等)(1)
- 黑马程序员:Java基础总结----字符字节转换流&system.in&out
- 黑马程序员——基础篇——关于字节流和字符流的区别
- 黑马程序员-java基础 io字符流
- 黑马程序员--java基础:字符IO流
- 《黑马程序员》 字符流和字节流 -----第十八天
- 黑马程序员 字节流和字符流缓冲区的对比
- 黑马程序员——字节流和字符流
- Java工具类之Apache的Commons-lang
- iOS解析HTML
- lightoj 1422 - Halloween Costumes 【区间dp入门】
- 一段代码,求解数独(九宫格)游戏
- UVa 508
- 黑马程序员---Java基础---字节流和字符流
- libsvm安装测试步骤
- Docker 1.9 官方中文手册
- MongoDB Cluster Setting up [replSet + Sharding]
- JDK配置完成以后,“.jar”文件双击依旧不能运行的问题
- 深度分析 Java 的 ClassLoader 机制(源码级别)
- CAS 单点登陆配置
- stdafx.h的作用以及原理
- 关键业务系统的JVM启动参数推荐http://calvin1978.blogcn.com/articles/jvmoption-2.html