FileInputStream/FileOutputStream的笔记:

/**(FileInputStream/FileOutputStream四个步骤: ①声明②加载地址③read/write④close流)
* FileInputStream fis
* 1.public int read( byte[] b, int off, int len) throws IOException
* //从fis流读取字符, 后两项规定存储位置(左闭右开);默认最多b.length字节的数据到字节数组
* //int 返回值表示每次读取的字符的Byte 个数.
* FileOutputStream fos
* 1.输出的物理文件可以不存在,若不存在则可以自动创建!若存在,则会进行覆盖!
* 2.public FileOutputStream(String name,boolean append) throws FileNotFoundException
* //如果第二个参数是true ,则字节将写入文件的末尾而不是开头。
*/

三个实验的代码:

public class Test_FileInputStream {
@Test //实验1目的: 建立byte读入流,从文件读取数据, 并建立异常保护机制
public void testFileInputStream1(){ File f1=new File("D:\\SZS文件夹\\IO\\hello.txt");
FileInputStream fis=null;
byte[] date=new byte[4];
int num;
try {
fis=new FileInputStream(f1);
while((num = fis.read(date,0,4) ) != -1){
String s= new String(date);
System.out.println("每4个byte打印读入流:"+s);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
} } @Test //实验2目的: 建立byte输出流,并建立异常保护机制
public void testFileOutputStream1(){
File f1=new File("D:\\SZS文件夹\\IO\\hello.txt");
FileOutputStream fos=null;
String s="this a testFileOutputStream1!"; //没毛病,s.getBytes("UTF-8")
try {
fos= new FileOutputStream(f1,true);
fos.write(s.getBytes("UTF-8")); //包装类可以轻松转换类型
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fos.close();
}catch (IOException e){
e.printStackTrace();
}
}
} @Test //实验3目的: 从硬盘读取一个文件,并写到另一个文件 (相当于文件的复制!)
public void TestCopyFile() throws IOException {
// ①声明②加载地址③read/write④close流)
File f1=new File("D:\\SZS文件夹\\IO\\hello.txt");
File f2=new File("D:\\SZS文件夹\\IO\\hello_copy.txt");
FileInputStream fis=null;
FileOutputStream fos=null; try {
fis= new FileInputStream(f1);
fos= new FileOutputStream(f2);
//3.实现文件的复制
byte[] b=new byte[20];
int len=5;
while( (len = fis.read(b)) !=-1){ fos.write(b,0,len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
fis.close();
fos.close();
}
}
}

控制台的输出结果:

每4个byte打印读入流:this
每4个byte打印读入流: a t
每4个byte打印读入流:estF
每4个byte打印读入流:ileO
每4个byte打印读入流:utpu
每4个byte打印读入流:tStr
每4个byte打印读入流:eam1
每4个byte打印读入流:!thi
每4个byte打印读入流:s a
每4个byte打印读入流:test
每4个byte打印读入流:File
每4个byte打印读入流:Outp
每4个byte打印读入流:utSt
每4个byte打印读入流:ream
每4个byte打印读入流:1!am

本地文件结果:

Java基础 FileInputStream/ FileOutputStream / 字节输入流 字节输出流实现文件的复制的更多相关文章

  1. Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)

    Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...

  2. java开发知识IO知识之输入输出流以及文件

    目录 java开发知识IO知识之输入输出流以及文件 一丶流概述 二丶输入流讲解 InputStream类. 1. 输入流以及类层次结构 2.文件操作.使用输入流读取 三丶输出流 OutputStrea ...

  3. Java之字节输入流和输出流

    package IODemo; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOEx ...

  4. 牛客网Java刷题知识点之输入流、输出流、字节流、字符流、字节流的抽象基类(InputStream、OutputStream)、字符流的抽象基类(Reader、Writer)、FileWriter、FileReader

    不多说,直接上干货! IO流用来处理设备之间的数据传输. java对数据的操作是通过流的方式. java用于操作流的对象都在IO包中. IO流按操作数据分为两种:字节流和字符流. IO流按流向分为:输 ...

  5. IO流 - 字节输入输出流,文件的复制

    IO流 I:input - 输入(读取),eg:把硬盘的内容读取到内存 O: output - 输出(写入) eg:把内存中的东西写入硬盘保存 流:数字(字符/字节) 一般1个字符=2Byte,1By ...

  6. Java的IO流以及输入流与输出流的异同

    一:流的基本概念:           Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.J ...

  7. Java 基础(四)| IO 流之使用文件流的正确姿势

    为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 IO 流? 想象一个场景 ...

  8. Java基础小知识1——分别使用字节流和字符流复制文件

    在日常使用计算机过程中经常会涉及文件的复制,今天我们就从Java代码的角度,看看在Java程序中文件复制的过程是如何实现的. 1.使用字节流缓冲区复制文件 示例代码如下: import java.io ...

  9. Java基础之序列化对象——将对象写入到文件中(SerializeObjects)

    控制台程序. 首先定义一个含有任意不同数据类型域的可序列化类: import java.io.Serializable; public class Junk implements Serializab ...

随机推荐

  1. Introduction - Unsupervised Learning

    摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第一章<绪论:初识机器学习>中第4课时<无监督学习>的视频原文字幕.为本人在视频学习过程中逐字逐句 ...

  2. ORACLE创建表空间和用户,并分配权限

    注意:如果是创建新的库,首先要先创建表空间,之后才可以创建用户:1.//创建临时表空间 create tablespace NCPZS_DATA datafile '/home/soft/oracle ...

  3. Netty学习笔记(三)——netty源码剖析

    1.Netty启动源码剖析 启动类: public class NettyNioServer { public static void main(String[] args) throws Excep ...

  4. 从零开始学游戏开发(一):下载与安装UE4游戏引擎

    如何下载和安装虚幻引擎 下载Epic Games Launcher 步骤 百度搜索"what is ue4" 点击第一个搜索结果,进入ue4官网 进入官网首页,点击右上角下载 创建 ...

  5. 转:SLAM算法解析:抓住视觉SLAM难点,了解技术发展大趋势

    SLAM(Simultaneous Localization and Mapping)是业界公认视觉领域空间定位技术的前沿方向,中文译名为“同步定位与地图构建”,它主要用于解决机器人在未知环境运动时的 ...

  6. [转帖]Intel要提供2.5G的消费级以太网 价格2.4刀

    千兆网已成过去!Intel将全面普及2.5Gbps以太网 https://news.cnblogs.com/n/641736/ 硬件发展突飞猛进 投递人 itwriter 发布于 2019-10-02 ...

  7. java源码 -- HashSet

    概述 HashSet是基于HashMap来实现的, 底层采用HashMap的key来保存数据, 借此实现元素不重复, 因此HashSet的实现比较简单, 基本上的都是直接调用底层HashMap的相关方 ...

  8. 基于java配置log4j日志详解

    1.Log4j 1.1了解Log4j Log4j是Apache的一个开源项目,通过使用log4j,我们可以控制日志信息输送的目的地可以是控制台.文件.GUI组件,我们也可以控制每一条日志的输出格式,通 ...

  9. 公式编辑器之 AxMath(18)

    1. 使用教程 视频教程,一共有18集,每集都比较短. >> 视频教程链接:B站,速度快,清晰 2. 破解软件下载链接 >> 下载链接:复制链接到迅雷或IDM下载很快 3. M ...

  10. Erlang:[笔记三,构建工具rebar之使用依赖]

    概述 类似Java中的Maven,Gradle,在Erlang中同样也有包管理的工具,Rebar提供Erlang依赖(包)管理机制,开发人员可以重复使用已有的模块,通过rebar引入自己的项目直接使用 ...