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. Python 动态规划算法

    背包问题 假设你是一个小偷,背一个可装4磅东西的背包.可盗窃的商品有如下3件: 音响,4磅,价值3000美元 笔记本电脑,3磅,价值2000美元 吉他,1磅,价值1500美元 为了让盗窃的商品价值最高 ...

  2. 设置主机防火墙规则(iptables规则设置及其与firewalld的生死纠葛)

    一.什么是firewalld防火墙? firewalld防火墙在Linux主机里其实就是一道隔离工具,它只对进出主机的请求做判断处理.也就是说它只管进出,至于你进来后做了什么,就不在firewalld ...

  3. golang web框架 beego 学习 (五) 配置文件

    app.conf: appname = gowebProject httpport = runmode = dev copyrequestbody = true [db] host= localhos ...

  4. 【数据库开发】 C连接mysql——常用的函数

    转载:http://blog.chinaunix.net/uid-26758020-id-3288633.html 1.MYSQL *mysql_init(MYSQL *mysql)    为mysq ...

  5. Npcap.例子(raw tcp syn)

    1.来自:winpcap实现syn攻击 - 125096 - CSDN博客.html(https://blog.csdn.net/qq125096885/article/details/5178452 ...

  6. 前端入门系列之CSS

    CSS (Cascading Style Sheets) 是用来样式化和排版你的网页的 —— 例如更改网页内容的字体.颜色.大小和间距,将内容分割成多列或者加入动画以及别的装饰型效果. CSS是什么 ...

  7. [学习笔记] Blender layout 视图切换

    layout 数字键5  --- 正交视图/透视图 切换 数字键0 -- 摄像机视图 数字键7 -- 顶视图 数字键1 --- 前视图 数字键3 --- 右视图 ctrl +数字键3 --- 左视图 ...

  8. 深度剖析Kubernetes API Server三部曲 - part 3

    在本系列的前两部分中我们介绍了API Server的总体流程,以及API对象如何存储到etcd中.在本文中我们将探讨如何扩展API资源. 在一开始的时候,扩展API资源的唯一方法是扩展相关API源代码 ...

  9. (四)CXF之处理Map类型的数据

    一.需求描述 正常来讲webService可以处理Java 数据类型.JavaBean.List等,但是却不能处理Map数据类型.本章讲解如何使用适配器来使得web服务可以处理Map数据类型. 流程: ...

  10. ml

    基础篇: 1. 读书<Introduction to Data Mining>,这本书很浅显易懂,没有复杂高深的公式,很合适入门的人.另外可以用这本书做参考<Data Mining ...