FileOutputStream

  1. 创建字节输出流对象FileOutputStream fl =new FileOutputStream()
  • 传入的参数可以是字符串路径或者File对象(实际上如果传入字符串也会在内部创建File对象)
  • 如果文件不存在会在创建一个文件,但是必须保证其父级路径是存在的,这个和File是相似的
  • 如果文件存在,则会清空文件,你可以选择传入第二个参数(boolean),让对象是可以续写的
  1. 写数据fl.write(92)
  • 写入整数,显示对应ascii码值
  • 如果想一口气将字符写入文件:
String str="hello World!"
byte byte1[]=str.getBytes();
fl.write(byte1);
  • 可以写入byte数组,并给出起始位置和总长度(可以不给)
  • 如果想让数据换行可以传入:
String str="\n"
byte byte1[]=str.getBytes();
fl.write(byte1);
  1. 释放资源
  • 使用完都要进行释放,相当于解除对文件的占用

FileinputStream

  1. 创建字节输入对象FileInputStream fl =new FileInputStream()
  • 如果文件不存在,直接报错
  1. 读取数据fl.read()
  • 读取字节数据,将数据进行返回,且读取一次数据,就移动到下一个
  • 读到文件末尾方法返回-1
  1. 释放资源

练习:复制粘贴,并显示花费时长(毫秒)

package Java_test;

import java.io.*;

public class Test {
public static void main(String[] args) throws IOException{
File fl =new File(".\\5.jpg");
FileInputStream infile = new FileInputStream("C:\\Users\\Lenovo\\Pictures\\5665.jpg");
FileOutputStream outfile = new FileOutputStream(fl);
int b=0;
long start = System.currentTimeMillis();
while ((b = infile.read()) != -1) {
outfile.write(b);
}
System.out.println("复制粘贴完成");
long end = System.currentTimeMillis();
System.out.println("总共花费时长:" + (end - start) + " 毫秒");
outfile.close();
infile.close();
}
}

以上练习可以看出,一个字节一个字节进行读取速度会非常慢,为了更快的进行数据传输我们可以用int len = outfile.read(bytes)其中,bytes是字节型字符串,这行代码会读取文件中的数据,并尽可能的填满数组,读取的数据会从头对数组进行覆盖,如果覆盖不完全会使后面出现多余数据,其中数组长度最好是1024的整数倍

所以,我们可以利用他的返回值,len这个指的是读取数据的长度,System.out.println(new String(bytes,0,len));这个String是将从0开始len长度的数据转成字符串,并进行输出

File与IO流之字节流的更多相关文章

  1. JavaSE学习笔记(14)---File类和IO流(字节流和字符流)

    JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...

  2. java io流(字节流)复制文件

    java io流(字节流) 复制文件 //复制文件 //使用字节流 //复制文本文件用字符流,复制其它格式文件用字节流 import java.io.*; public class Index{ pu ...

  3. IO流(字节流复制)01

    package ioDemo; import java.io.*; /** * IO流(字节流复制) * Created by lcj on 2017/11/2. */ public class bu ...

  4. 12.19 file 与io流

    12.19 file与io流 File 1. 新建文件或者文件夹 新建文件 File F = new File(pathname:"路径+文件名");Boolean flag = ...

  5. 【Java IO流】字节流和字符流详解

    字节流和字符流 对于文件必然有读和写的操作,读和写就对应了输入和输出流,流又分成字节和字符流. 1.从对文件的操作来讲,有读和写的操作——也就是输入和输出. 2.从流的流向来讲,有输入和输出之分. 3 ...

  6. JavaSE(十二)之IO流的字节流(一)

    前面我们学习的了多线程,今天开始要学习IO流了,java中IO流的知识非常重要.但是其实并不难,因为他们都有固定的套路. 一.流的概念     流是个抽象的概念,是对输入输出设备的抽象,Java程序中 ...

  7. Java基础:IO流之字节流和字符流

    1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...

  8. IO流之字节流

    IO流分类 按照数据流向 输入流:从外界(键盘.网络.文件…)读取数据到内存 输出流:用于将程序中的数据写出到外界(显示器.文件…) 数据源 目的地 交通工具 按照数据类型 字节流:主要用来处理字节或 ...

  9. java基础10(IO流)-字节流

    IO流 输入与输出[参照物是程序] 如果从键盘.文件.网络甚至是另一个进程(程序或系统)将数据读入到程序或系统中,称为输入 如果是将程序或系统中的数据写到屏幕.硬件上的文件.网络上的另一端或者是一个进 ...

  10. IO流总结---- 字节流 ,字符流, 序列化 ,数据操作流,打印流 , Properties 集合

    笔记内容: 什么是流 字节流 字符流 序列化 数据操作流(操作基本数据类型的流)DataInputStream 打印流 Properties 集合 什么是流: 流是个抽象的概念,是对输入输出设备的抽象 ...

随机推荐

  1. 万字调研——AI生成内容检测

    数据集 TweepFake 地址 摘要:深度伪造(deepfakes).合成或篡改媒体的威胁正变得越来越令人担忧,尤其是对于那些已经被指控操纵公众舆论的社交媒体平台而言.即使是最简单的文本生成技术(例 ...

  2. uniapp 截屏扫码

    最近开发功能遇到个需求,用户点击某个操作之后,需要截取当前屏幕内容,并扫码识别屏幕截图中的二维码,代码如下: 首先将代码抽离到外部文件中,以便复用: // 截图 export function tak ...

  3. vue学习二(计算属性computed和监听器watch)

    1.1.computed  计算属性 先写注意事项把:computed和methods的区别 //computed定义的方法我们是以属性访问的形式调用的{{computedTest}}    comp ...

  4. 【离线地图】地图瓦片css复杂滤镜线段绘制

    需求: 目前已经对地图瓦片做了复杂滤镜的黑夜展示,现在又要在这个图片上绘制新的线段等内容,且不能被这个复杂滤镜影响,变成奇奇怪怪的颜色. 同时因为框架限制,只能在这个img上绘制 思考: 1.既然不想 ...

  5. 如何写自己的springboot starter?自动装配原理是什么?

    如何写自己的springboot starter?自动装配原理是什么? 官方文档地址:https://docs.spring.io/spring-boot/docs/2.6.13/reference/ ...

  6. B@se-还原错误字母表转码的base64编码

    题目: 密文:MyLkTaP3FaA7KOWjTmKkVjWjVzKjdeNvTnAjoH9iZOIvTeHbvD== JASGBWcQPRXEFLbCDIlmnHUVKTYZdMovwipatNOe ...

  7. 防止恶意解析——禁止通过IP直接访问网站

    一.什么是恶意解析 一般情况下,要使域名能访问到网站需要两步,第一步,将域名解析到网站所在的主机,第二步,在web服务器中将域名与相应的网站绑定.但是,如果通过主机IP能直接访问某网站,那么把域名解析 ...

  8. weblogic日志查看

    都是使用tail -f catalina.out命令来查看的,不要太顺手: 今天登陆到公司另外一个Team 的服务器上,发现装的是weblogic,手痒想看看weblogic怎么看日志,找了老半天,才 ...

  9. Ubuntu给Appimage创建快捷方式

    下载 AppImageLauncher 2.安装 3.选择要运行的Appimage 双击运行即可.他会在home目录下创建一个applications文件夹,并且帮你自动创建快捷方式.

  10. 1001: 【编程入门】A+B 输入输出练习I

    1001: [编程入门]A+B 输入输出练习I[https://www.cyccfoj.com/problem.php?id=1001] ''' 题目描述 你的任务是计算a+b.这是为了acm初学者专 ...