节点流(文件流) FileInputStream & FileOutputStream & FileReader & FileWriter
节点流(文件流)
FileInputStream(字节流)处理视频类的
FileOutputStream(字节流)
FileReader(字符流)处理文本文件
FileWriter(字符流)
TestFileInputOutStream
package com.aff.file; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import javax.print.DocFlavor.STRING; import org.junit.Test; //节点流(文件流) // FileInputStream(字节流)处理视频类的
// FileOutputStream(字节流)
//
// FileReader(字符流)处理文本文件
// FileWriter(字符流)
public class TestFileInputOutStream { //FileInputStream
//从硬盘存在的文件中,读取其内容到程序中
//要读取的文件一定要存在,否则抛出FileNotFoundException
@Test
public void testFileInputStream() throws IOException {
// 1.创建一个File类的对象
File file = new File("heel.txt");//指明要读入文件的路径
// 2.创建一个FileInputStream类的对象
FileInputStream fis = new FileInputStream(file);
// 3.调用FileInputStream的方法,实现file文件的读取
/*
* read(): 读取文件的一个字节每执行到文件结尾时, 返回-1
*/
// int b = fis.read();
// while (b != -1) {
// System.out.println((char)b);
// b = fis.read();
// }
int b ;
while((b = fis.read())!=-1){
System.out.println((char)b);
}
// 4.关闭相应的流
fis.close();
} // 改进, 使用try-catch处理,保证流的关闭操作一定可以执行
@Test
public void testFileInputStream1() { FileInputStream fis = null;
try {
// 1.创建一个File类的对象
File file = new File("heel.txt");//指明要读入文件的路径
// 2.创建一个FileInputStream类的对象
fis = new FileInputStream(file);
// 3.调用FileInputStream的方法,实现file文件的读取
int b ;
while((b = fis.read())!=-1){
System.out.println((char)b);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
// 4.关闭相应的流
if(fis != null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} //再改进, 使用使用数组读取,更加快
@Test
public void testFileInputStream2() {
FileInputStream fis = null;
try {
File file = new File("heel.txt");
fis = new FileInputStream(file);
//使用数组
byte [] b = new byte[5];//读取到的数据写入数组
int len ;//每次读入到byte中的字节的长度
while((len = fis.read(b))!=-1){
// for(int i = 0;i<len;i++){
// System.out.println((char)b[i]);
// }
String str = new String(b,0,len);//读入数组b中,从0开始,每次读入的长度
System.out.print(str);
} } catch (Exception e) {
e.printStackTrace();
}finally {
if(fis != null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} //FileOutputStream
@Test
public void testFileOutputStream(){
FileOutputStream fos = null;
try {
//创建一个File类的对象。表名要写入的文件位置
//输出的物理文件可以不存在,当执行过程中,若不存在,会自动创建。若存在会将原来的文件覆盖。
File file = new File("aff");
//创建一个FileOutputStream类的对象,将file类的对象作为形参传递给FileOutputStream的构造器中
fos = new FileOutputStream(file);
//写入操作
fos.write(new String("i love fangfang").getBytes());//将字符串转为字节数组
}catch (IOException e) {
e.printStackTrace();
}finally {
//关闭输出流
if(fos != null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} //testFileInputOutStream, 实现文件复制
@Test
public void testFileInputOutStream(){
//从硬盘读取一个文件,并写入到另一个位置。(相当于文件的复制)
File file1 = new File("aff.txt");
File file2 = new File("aff2.txt");
FileInputStream fis = null;
FileOutputStream fos = null;
//提供相应的流
try {
fis = new FileInputStream(file1);
fos = new FileOutputStream(file2);
//实现文件的复制
byte[] b = new byte[20];
int len;
while((len = fis.read(b)) != -1){
fos.write(b, 0, len);
}
}catch (IOException e) {
e.printStackTrace();
}finally {
if(fos != null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fis != null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} // 实现文件复制的方法
public void copyFile(String src,String dest){
File file1 = new File(src);
File file2 = new File(dest);
FileInputStream fis = null;
FileOutputStream fos = null;
//提供相应的流
try {
fis = new FileInputStream(file1);
fos = new FileOutputStream(file2);
//实现文件的复制
byte[] b = new byte[20];
int len;
while((len = fis.read(b)) != -1){
fos.write(b, 0, len);
}
}catch (IOException e) {
e.printStackTrace();
}finally {
if(fos != null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fis != null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} @Test
public void testCopyFile(){
long start = System.currentTimeMillis();
String src = "C:\\Users\\lz\\Desktop\\1.avi";
String dest = "C:\\Users\\lz\\Desktop\\2.avi";
copyFile(src,dest);
long end = System.currentTimeMillis();
System.out.println("花费的时间:"+(end-start));//21MB 4968
} }
TestFileReaderWriter:
package com.aff.file; import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; import org.junit.Test; public class TestFileReaderWriter { // FileReader
@Test
public void testFileReader() {
FileReader fr = null;
try {
File file = new File("license.txt");
fr = new FileReader(file);
char[] c = new char[30];
int len;
while ((len = fr.read(c)) != -1) {
String str = new String(c, 0, len);
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} // 使用FileReader FileWriter ,实现文本文件的复制
// 对于非文本文件(视频,图片,音乐等)只能使用字节流
@Test
public void testFileReaderWriter() {
// 1.输入流对应的文件src一定要存在,输出流对应的dest可以不存在,执行过程中会自动创建
FileReader fr = null;
FileWriter fw = null; try {
File src = new File("license.txt");
File dest = new File("license1.txt");
fr = new FileReader(src);
fw = new FileWriter(dest);
char[] c = new char[30];
int len;
while ((len = fr.read(c)) != -1) {
fw.write(c, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} }
复制结果:

节点流(文件流) FileInputStream & FileOutputStream & FileReader & FileWriter的更多相关文章
- java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
FileInputStream <span style="font-family:Verdana;">import java.io.File; import java. ...
- 07 IO流(四)——文件字节流 FileInputStream/FileOutputStream与文件的拷贝
两个类的简述 专门用来对文件进行读写的类. 父类是InputStream.OutputStream 文件读入细节 FileOutputStream流的构造方法:new FileOutputStream ...
- io流-文件流\节点流
FileOutputStream类(jdk1.0) 描述 java.io.FileOutputStream 类是文件字节输出流,用于将数据写入到文件中. 构造方法 //构造方法 FileOutputS ...
- 用内存流 文件流 资源生成客户端(Delphi开源)
正文:很多木马生成器就是用的内存流和文件流生成客户端的,废话不多说了,代码如下: unit Main; interface usesWindows, Messages, SysUtils, Varia ...
- csv内存流文件流
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)
1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...
- java 文件字节和字符流 缓冲流
流的原理 1) 在 Java 程序中,对于数据的输入/输出操作以“流”(stream) 方式进行:2) J2SDK 提供了各种各样的“流”类,用以获取不同种类的数据:程序中通过标准的方法输入或输出数据 ...
- JAVA的节点流和处理流以及流的关闭顺序
今天在编写hadoop程序的时候,用到了流的处理.关闭流的时候出现了问题: 代码: FSDataInputStream fsin = fs.open(new Path(filein)); FSData ...
- 文件流FileStram类
本节课主要学习三个内容: 创建FileStram流 读取流 写入流 文件流FileStram类,是用来实现对文件的读取和写入.FileStram是操作字节的字节数组,当提供向文件读取和写入字节的方法时 ...
随机推荐
- Python爬虫---爬取抖音短视频
目录 前言 抖音爬虫制作 选定网页 分析网页 提取id构造网址 拼接数据包链接 获取视频地址 下载视频 全部代码 实现结果 待解决的问题 前言 最近一直想要写一个抖音爬虫来批量下载抖音的短视频,但是经 ...
- 安装KubeSphere
1. KubeSphere 是什么 1.1. 官方解释 KubeSphere是一个分布式操作系统,提供以Kubernetes为核心的云原生堆栈,旨在成为第三方应用程序的即插即用架构,以促进其生态系统的 ...
- MES系统的模型结构和主要功能(二)
上一节,我们主要说了Mes系统是什么,以及它的特点和难点,本节,再来讨论一下一个合格的MES系统的模型结构和基本功能. 现代工厂的快速发展,对MES系统提出了更高的要求,其必须满足范围广泛的任务要求, ...
- springmvc与struts2执行流程比较
之前写过一篇struts2的执行流程的文章了,这里对struts2的流程就不做过多的分析,这篇文章主要分析spring-mvc的执行流程以 及struts2与spring-mvc的差别. 1.stru ...
- leetcode485——最大连续1的个数(easy)
一.题目描述 给定一个二进制数组, 计算其中最大连续1的个数. 示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3. 注意 ...
- 【Hadoop离线基础总结】Hue与oozie集成
目录 1.停止oozie与hue的进程 2.修改oozie的配置文件 3.修改hue的配置文件 4.启动hue与oozie的进程 5.页面访问hue 1.停止oozie与hue的进程 bin/oozi ...
- 可怕!CPU竟成了黑客的帮凶!
本故事根据CPU真实漏洞改编 前情回顾 还记得我吗,我是阿Q,就是那个CPU一号车间的阿Q啊.如果你忘记了我,记得看看这里回忆一下哦:完了!CPU一味求快出事儿了! 自从我们车间用上了乱序执行和分支预 ...
- javaweb学习之路(2)response
写一个简单的登录页面 1.创建一个login.jsp文件 主要内容: <form action="check.jsp" method="post"> ...
- C#实现局域网聊天 通讯 Socket TCP 多人
程序分别为服务端与客户端,服务端创建套接字使用多线程侦听多客户端请求 代码需要引用System.Net:和System.Net.Socket:这两个类 分享源码demo:https://pan.bai ...
- android 百度地图v3.2.0获取实际地址
百度地图升级到v3.2.0后,api发生挺大的变化的,但是下载的Demo却不是最新版本的. 在v3.2.0之前获取详细地址只要:option.setIsNeedAddress(true); 但是升级后 ...