java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr

BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStreamReader
每一种流都介绍到了,详细一目了然的详细
下面是字节流常见操作的四种方式:
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.BufferedInputStream;
import java.io.IOException; /*
* 四种方式实现大文件数据的读取写入--->复制
* 1.基本字节流一次读取一个字节
* 2.基本字节流一次读取一个字节数组
* 3.高效字节流一次读取一个字节
* 4.高校字节流一次读取一个字节数组
*
*/
public class Test2 {
public static void main(String[] args) throws IOException {
long start = System.currentTimeMillis(); // method1("E:\\b.txt", "c.txt"); //基本字节流一次一个字节
// method2("E:\\b.txt", "c.txt"); //一次一个字节数组
// method3("E:\\b.txt", "c.txt"); //高效字节流一次一个字节
method4("E:\\b.txt", "c.txt"); //高效字节流一次一个字节数组 long end = System.currentTimeMillis();
System.out.println("共耗时: " + (end - start) + "毫秒");
} // 1.基本方法字节流一次读取一个字节
public static void method1(String srcPath, String destPath)
throws IOException {
// 读取数据对象
FileInputStream fis = new FileInputStream(srcPath);
// 写入数据目标文件路径
FileOutputStream fos = new FileOutputStream(destPath);
// 数据读写
// 直接以单字节读取
int by = 0;
while ((by = fis.read()) != -1) {
fos.write(by);
}
// 关闭流
fos.close();
fis.close();
} // 2.基本字节读取一次读取一个数组
public static void method2(String srcPath, String destPath)
throws IOException {
// 数据读取的对象封装
FileInputStream fis = new FileInputStream(srcPath);
// 数据写入对象封装
FileOutputStream fos = new FileOutputStream(destPath);
// 数据的读写
byte[] bys = new byte[1024];
int len = 0;
while ((len = fis.read(bys)) != -1) {
fos.write(bys, 0, len);
}
// 关闭流
fis.close();
fos.close();
} // 3.高效字节流一次读取一个字节
public static void method3(String srcPath, String destPath)
throws IOException {
// 数据读取对象封装
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
srcPath));
// 数据写入对象封装
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(destPath)); // 数据读写操作
int by = 0;
while ((by = bis.read()) != -1) {
bos.write(by);
} // 关闭流
bos.close();
bis.close();
} // 4.高效字节流读取一个字节数组
public static void method4(String srcPath, String destPath)
throws IOException {
// 数据读取对象封装
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
srcPath));
// 数据写入对象
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(destPath)); // 数据读写操作
byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
} // 关闭流
bos.close();
bis.close();
}
}
下面是字符流常见操作的四种方式:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader; /*
* 需求:复制文本文件
* 分析:如果使用Windows记事本打开之后能读懂就是用字符流,显然此处使用字符流
* 字符流有五种方式:尤其是第五种字符高效流的特殊方式
* 数据源的地址以及目标地址也应该用String封装
*/
public class CopyFileDemo {
public static void main(String[] args) throws IOException {
// 字符流读取源文件对象
// method1(); // 普通方法的单字节读取
// method2(); //普通的字符数组
//method3(); //高效的字节数组
method4(); //高效的字节数组
method5(); //按行读取写入 ,这个很常用!!
} private static void method1() throws IOException {
// 源文件对象,读取数据
// InputStreamReader isr = new InputStreamReader(new FileInputStream(
// "c:\\a.txt"));
FileReader fr = new FileReader("c:\\a.txt");
// 目标文件对象,写入数据
FileWriter fw = new FileWriter("dest.txt"); // 数据的复制
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
} // 释放资源
fr.close();
fw.close();
} // 字符数组读取复制文件
private static void method2() throws IOException {
// 数据源文件对象,读取数据
FileReader fr = new FileReader("c:\\a.txt");
// 目标文件对象,写入数据
FileWriter fw = new FileWriter("dest.txt"); // 数据复制
char[] chs = new char[1024];
int len = 0;
while ((len = fr.read(chs)) != -1) {
fw.write(chs, 0, len);
fw.flush(); // 字符流在写入数据时一定记得刷新!
} // 释放资源
fr.close();
fw.close();
} // 高效字符数组复制文件--->单字符模式
public static void method3() throws IOException {
// 数据源文件对象,读取数据
BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));
// 目标文件对象,写入数据
BufferedWriter bw = new BufferedWriter(new FileWriter("dest1")); // 文件的复制
int ch = 0;
while ((ch = br.read()) != -1) {
bw.write(ch);
} // 释放资源
bw.close();
br.close();
} // 高效字符数组复制文本文件--->字符数组模式
private static void method4() throws IOException {
// 数据源文件对象,读取数据
BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));
// 目标文件对象,写入数据
BufferedWriter bw = new BufferedWriter(new FileWriter("dest1.txt")); // 数据复制
char[] chs = new char[1024];
int len = 0;
while ((len = br.read(chs)) != -1) {
bw.write(chs);
bw.flush();
} // 释放资源
br.close();
bw.close();
} // 高效字符流的特殊方法--->按行读取写入~!这个是狠狠常用的
private static void method5() throws IOException {
// 数据源文件对象,读取数据
BufferedReader br = new BufferedReader(new FileReader("c:\\a.txt"));
// 目标文件对象,写入数据
BufferedWriter bw = new BufferedWriter(new FileWriter("dest.txt")); // 数据复制操作
String line = null;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
bw.flush();
} // 释放资源
br.close();
bw.close();
}
}
java中OutputStream字节流与字符流InputStreamReader 每一种基本IO流BufferedOutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedReader,BufferedWriter,FileInputStream,FileReader,FileWriter,InputStr的更多相关文章
- JAVA中的字节流与字符流
字节流与字符流的区别? 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用 ...
- Java中的字节流,字符流,字节缓冲区,字符缓冲区复制文件
一:创建方式 1.建立输入(读)对象,并绑定数据源 2.建立输出(写)对象,并绑定目的地 3.将读到的内容遍历出来,然后在通过字符或者字节写入 4.资源访问过后关闭,先创建的后关闭,后创建的先关闭 ...
- Java字节流和字符流,是时候总结一下IO流了
目录 从接收输入值说起 字节流读取 字符流读取 Scanner 读取 什么是 IO 流 字节流和字符流 字节流 字节输入流 字节输出流 缓冲流的原理 字符流 字符输入流 字符输出流 为什么字符流需要 ...
- java中全角半角字符的相互转换的代码
如下内容是关于java中全角半角字符的相互转换的内容.package com.whatycms.common.util; import org.apache.commons.lang.StringUt ...
- 弄清java中的字节与字符
问题 在java中,一个字符等于多少字节? 或者更详细的问:在java中,一个英文字符等于多少字节?一个中文字符等于多少字节? 答案 Java采用unicode来表示字符,java中的一个char是2 ...
- Java进阶(四十二)Java中多线程使用匿名内部类的方式进行创建3种方式
Java中多线程使用匿名内部类的方式进行创建3种方式 package cn.edu.ujn.demo; // 匿名内部类的格式: public class ThreadDemo { public st ...
- Java 输入/输出——字节流和字符流
1.流的分类 (1)输入流和输出流(划分输入/输出流时是从程序运行所在内存的角度来考虑的) 输入流:只能从中读取数据,而不能向其写入数据. 输出流:只能向其写入数据,而不能从中读取数据. 输入流主要由 ...
- JAVA基础之字节流与字符流
个人理解: IO流就是将数据进行操作的方式,因为编码的不同,所以对文件的操作就产生两种.最好用字节流,为了方便看汉字等,(已经确定文字的话)可以使用字符流.每个流派也就分为输入和输出,这样就可以产生复 ...
- java基础(23):字节流、字符流
1. 字节流 在前面的学习过程中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现在我们就要开始给文件中写数据,或者读取文件中的数据. 1.1 字节输出流OutputStream Out ...
随机推荐
- saltstack之(三)认证管理
salt-master和salt-minion之间需要进行认证,认证之后salt-master才能管理salt-minion. 1.在node1:[root@node1 ~]# egrep -v '^ ...
- Linux就这个范儿 第18章 这里也是鼓乐笙箫 Linux读写内存数据的三种方式
Linux就这个范儿 第18章 这里也是鼓乐笙箫 Linux读写内存数据的三种方式 P703 Linux读写内存数据的三种方式 1.read ,write方式会在用户空间和内核空间不断拷贝数据, ...
- Sublime插件库新成员基于APICloud快速开发跨平台App
互联网时代强调用户体验,那什么是HTML5跨平台App开发者的编程体验?“不剥夺.不替换开发者喜欢的开发工具,就是人性化的用户体验”,APICloud给出了这样的答案! 重磅发布“多开发工具支持策略” ...
- Unicode 编码概念
Unicode 编码概念 Unicode 编码可能是我们日常开发中接触最多的字符编码方式之一,其它常见的中文编码方式还包括 GB2132-80 / GB13000 / GBK / GB18030 .在 ...
- windows下制作PHP扩展
一.编译PHP 转自:http://demon.tw/software/compile-php-on-windows.html 编译PHP扩展必需的一些头文件需要从php源码中获取,其中有一些配置性的 ...
- [BS-10] 统一设置app所有页面的“返回”按钮样式
统一设置app所有页面的“返回”按钮样式 如果想统一设置app所有页面的“返回”按钮样式,首先自定义WZNavigationController类继承UINavigationController类,然 ...
- java版本的sqlHelper
以下版本的sqlHelper可以支持普通的DDL,DML和查询语句,对于连接池,事务等的支持还有待改进 1)将数据库连接相关信息存储为属性文件,如database.properties,建立DataB ...
- ios_图片放大的两种方式transform和frame
frame改变x值y值的方式放大图片,是从左上开始放大. frame改变控件宽高的方式放大图片,是从中心开始放大. 原头像大小 用frame改变宽高 transform方式放大图片,从中心开始放大
- 什么是JDK,JRE
JDK 是Java开发工具包 (Java Development Kit ) 的缩写.它是一种用于构建在 Java 平台上发布的应用程序.applet 和组件的开发环境.其中包括了Java编译器.JV ...
- GPU 优化总结
前面说了对我这一年多的工作进行一个总结,由于工作比较紧,加上本人比较懒,一直没能抽出时间来写,最近稍微闲下来了.先写一篇GPU优化的,后续的文章希望能慢慢补齐.这些基本都是我个人优化的实际经验,也参考 ...