节点流(文件流)

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的更多相关文章

  1. java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例

    FileInputStream <span style="font-family:Verdana;">import java.io.File; import java. ...

  2. 07 IO流(四)——文件字节流 FileInputStream/FileOutputStream与文件的拷贝

    两个类的简述 专门用来对文件进行读写的类. 父类是InputStream.OutputStream 文件读入细节 FileOutputStream流的构造方法:new FileOutputStream ...

  3. io流-文件流\节点流

    FileOutputStream类(jdk1.0) 描述 java.io.FileOutputStream 类是文件字节输出流,用于将数据写入到文件中. 构造方法 //构造方法 FileOutputS ...

  4. 用内存流 文件流 资源生成客户端(Delphi开源)

    正文:很多木马生成器就是用的内存流和文件流生成客户端的,废话不多说了,代码如下: unit Main; interface usesWindows, Messages, SysUtils, Varia ...

  5. csv内存流文件流

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  6. Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

    1.操作基本数据类型的流     1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...

  7. java 文件字节和字符流 缓冲流

    流的原理 1) 在 Java 程序中,对于数据的输入/输出操作以“流”(stream) 方式进行:2) J2SDK 提供了各种各样的“流”类,用以获取不同种类的数据:程序中通过标准的方法输入或输出数据 ...

  8. JAVA的节点流和处理流以及流的关闭顺序

    今天在编写hadoop程序的时候,用到了流的处理.关闭流的时候出现了问题: 代码: FSDataInputStream fsin = fs.open(new Path(filein)); FSData ...

  9. 文件流FileStram类

    本节课主要学习三个内容: 创建FileStram流 读取流 写入流 文件流FileStram类,是用来实现对文件的读取和写入.FileStram是操作字节的字节数组,当提供向文件读取和写入字节的方法时 ...

随机推荐

  1. 虚拟 IP 设为静态 IP

    一:虚拟机设置桥接模式 1.进入虚拟机设置中将网络适配器设置成桥接模式 2.编辑--虚拟网络编辑器--选择桥接 二:将虚拟IP设置成静态IP (1)方案一:进入虚拟机系统 System 设置 (2)方 ...

  2. JavaScript toFixed() 实现四舍五入保留两位小数

    const num = 18.186; let result; result = num.toFixed(2) console.log(result) // 18.19 注意,返回值为String类型

  3. Shell脚本(二)数学运算

    直接上代码. #!/bin/bash no1= no2= echo "using let ..." let result=no1+no2 echo "result is: ...

  4. Pandas切片操作:很容易忽视的SettingWithCopyWarning

    Pandas是一个强大的分析结构化数据的工具集,主要用于数据挖掘和数据分析,同时也提供数据清洗功能. 很多初学者在数据的选取,修改和切片时经常面临一些困惑.这是因为Pandas提供了太多方法可以做同样 ...

  5. 软件——Jira是什么

    JIRA这个工具接触有好几年了,在多个海外项目上都用过这个工具.去年又在项目上深度使用后就有点爱不释手了,回国后也在找机会推荐给其它项目上用.最近正好有新项目需要用,借这个机会把JIRA的配置学习的过 ...

  6. Spring官网阅读(四)BeanDefinition(上)

    前面几篇文章已经学习了官网中的1.2,1.3,1.4三小结,主要是容器,Bean的实例化及Bean之间的依赖关系等.这篇文章,我们继续官网的学习,主要是BeanDefinition的相关知识,这是Sp ...

  7. MySQL数据类型笔记

    引言 作为一个做Java后端的开发者,无论是在自己平时项目学习实战还是工作中的真实项目,都离不开和数据库打交道.而MySQL作为当今最流行的关系型数据库之一,也成为了我们必须掌握的一门技术.最近在工作 ...

  8. 【Scala】Actor并发编程实现单机版wordCount

    文章目录 对单个文本文件进行单词计数 对多个文本文件进行单词计数 对单个文本文件进行单词计数 import scala.actors.Actor import scala.io.Source //读取 ...

  9. Day_09【常用API】扩展案例8_计算字符'j'和字符串'java'在字符串中出现的次数

    需求说明 定义如下字符串: String str = "javajfiewjavajfiowfjavagkljjava"; 请分别定义方法统计出: 1.字符串中:字符j的数量 2. ...

  10. SVN 分支代码合并到主线

    SVN 分支代码合并到主线 步骤一安装TortoiseSVN 客户端,在本地 checkout主线代码 步骤二:创建branches分支 步骤三.branches修改提交代码 步骤四:分支代码合并到主 ...