精华内容
下载资源
问答
  • 需求: 把E:\hhh\mn.jpg复制到模块目录下的mn.jpg 思路: 1:根据数据源创建字节输入流对象 2:根据目的地创建字节输出流对象 ... 4:释放资源 public class CopyJpgDemo { public static void main(String[] args)...

    需求:
    把E:\hhh\mn.jpg复制到模块目录下的mn.jpg

    思路:
        1:根据数据源创建字节输入流对象
        2:根据目的地创建字节输出流对象
        3:读写数据,复制图片(一次读取一个字节数组,一次写入一个字节数组)
        4:释放资源
    
    public class CopyJpgDemo {
        public static void main(String[] args) throws IOException {
            //根据数据源创建字节输入流对象
            FileInputStream fis = new FileInputStream("E:\\hhh\\mn.jpg");
            //根据目的地创建字节输出流对象
            FileOutputStream fos = new FileOutputStream("31myByteStream\\mn.jpg");
    
            //读写数据,复制图片(一次读取一个字节数组,一次写入一个字节数组)
            byte[] bys = new byte[1024];
            int len;
            while ((len=fis.read(bys))!=-1) {
                fos.write(bys,0,len);
            }
    
            //释放资源
            fos.close();
            fis.close();
        }
    }
    
    

    运行截图
    在这里插入图片描述

    展开全文
  • 需求: 把D:\hhh\1.mp4 复制到模块目录下的 1.mp4 思路: 1:根据数据源创建字节... 4:释放资源 `四种方式实现复制视频`,并记录每种方式复制视频的时间 1:基本字节流一次读写一个字节 共耗时:52365毫秒 ...

    需求:
    把D:\hhh\1.mp4 复制到模块目录下的 1.mp4

    思路:
        1:根据数据源创建字节输入流对象
        2:根据目的地创建字节输出流对象
        3:读写数据,复制图片(一次读取一个字节数组,一次写入一个字节数组)
        4:释放资源
    
    `四种方式实现复制视频`,并记录每种方式复制视频的时间
        1:基本字节流一次读写一个字节         共耗时:52365毫秒
        2:基本字节流一次读写一个字节数组     共耗时:112毫秒
        3:字节缓冲流一次读写一个字节         共耗时:462毫秒
        4:字节缓冲流一次读写一个字节数组      共耗时:71毫秒
    
    public class CopyAviDemo {
        public static void main(String[] args) throws IOException {
            //记录开始时间
            long startTime = System.currentTimeMillis();
    
            //复制视频
            //methond1();
            //methond2();
            //methond3()
    
            //记录结束时间
            long endTime = System.currentTimeMillis();
            System.out.println("共耗时:" + (endTime - startTime) + "毫秒");
        }
    
        //基本字节流,一次读写一字节
        public static void methond1() throws IOException {
            //D:\hhh\1.mp4
            // 复制到模块目录下的 1.mp4
            FileInputStream fis = new FileInputStream("D:\\hhh\\1.mp4");
            FileOutputStream fos = new FileOutputStream("31myByteStream\\1.mp4");
    
            int by ;
            while ((by=fis.read())!=-1){
                fos.write(by);
    
            }
            fos.close();
            fis.close();
        }
        //2:基本字节流一次读写一个字节数组
        public static void methond2() throws IOException {
            //D:\hhh\1.mp4
            // 复制到模块目录下的 1.mp4
            FileInputStream fis = new FileInputStream("D:\\hhh\\1.mp4");
            FileOutputStream fos = new FileOutputStream("31myByteStream\\1.mp4");
    
            byte[] bys = new byte[1024];
            int len;
            while ((len=fis.read(bys))!=-1){
                fos.write(bys,0,len);
    
            }
            fos.close();
            fis.close();
        }
    
        //3:字节缓冲流一次读写一个字节
        public static void method3()throws IOException{
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\hhh\\1.mp4"));
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("31myByteStream\\1.mp4"));
    
            int by;
            while ((by=bis.read())!=-1){
                bos.write(by);
            }
            bis.close();
            bos.close();
    
        }
        //4:字节缓冲流一次读写一个字节数组
        public static void method4()throws IOException{
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\hhh\\1.mp4"));
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("31myByteStream\\1.mp4"));
    
            byte[] bys = new byte[1024];
            int len;
            while ((len=bis.read(bys))!=-1){
                bos.write(bys,0,len);
            }
            bis.close();
            bos.close();
    
        }
    }
    

    运行截图:
    在这里插入图片描述

    展开全文
  • 用jmap查看java内存,发现[B的内存增长很快且释放慢。请问有哪些原因会导致byte增长快释放慢?求指点。
  • 继承了closeable接口 close方法 数据在流中传输结束,需要关闭流释放空间 二、方法解读 /** * Reads the next byte of data from the input stream. The value byte is * returned as ...

     java.io.InputStream 

    JAVA 输入流文件

     

    一、继承关系

     

    继承了closeable接口 close方法 数据在流中传输结束,需要关闭流释放空间

    二、方法解读

     

    /**
     * Reads the next byte of data from the input stream. The value byte is
     * returned as an <code>int</code> in the range <code>0</code> to
     * <code>255</code>. If no byte is available because the end of the stream
     * has been reached, the value <code>-1</code> is returned. This method
     * blocks until input data is available, the end of the stream is detected,
     * or an exception is thrown.
     *
     * <p> A subclass must provide an implementation of this method.
     *
     * @return     the next byte of data, or <code>-1</code> if the end of the
     *             stream is reached.
     * @exception  IOException  if an I/O error occurs.
    
     * 核心方法
     * 
     * 从打开的bytes流中读取bytes 并返回读取到的 int 值 (0到255)
     * 如果读到了末尾 返回 -1
     * 方法会阻塞直到 获取可读数据 or 流结尾 or throw exception
     * 抽象方法子类必须实现
     */
    public abstract int read() throws IOException;

     

    /**
     * 读取bytes 并保存到 入参b[]中 
     */ 
    public int read(byte b[]) throws IOException {
        return read(b, 0, b.length);
    }
    
    
    
    
    /**
     * 该方法循环调用read()方法读取 从 off(开始位置) 开始读取 len 长度bytes 保存到b[]中 
     */
    public int read(byte b[], int off, int len) throws IOException 
    /** 跳过长度为n的bytes */
    
    public long skip(long n) throws IOException

     

     

    /**
    mark、reset、markSupported 方法通常一起使用,
    mark方法会根据参数readlimit来对流进行标记 
    reset方法会返回标记位开始进行读取 
    前提是markSupported 需要返回 true 
    在InputStream中 markSupported默认返回false 所以mark和reset 没有实现 
    */
    
    public synchronized void mark(int readlimit) {}
    public boolean markSupported() {
        return false;
    }
    
    
    public synchronized void reset() throws IOException {
        throw new IOException("mark/reset not supported");
    }

     

    展开全文
  • Java编程思想读书笔记

    2018-07-19 10:21:53
    1.并发编程:某项任务锁定某项资源,完成其任务,然偶释放资源锁,使其他任务可以使用这项资源。 2.Java与Internet:web、web服务器、客户端编程、服务器端编程 二、一切都是对象 1.用引用操作对象 存储到什么...

    一、对象导论
    1.并发编程:某项任务锁定某项资源,完成其任务,然偶释放资源锁,使其他任务可以使用这项资源。
    2.Java与Internet:web、web服务器、客户端编程、服务器端编程
    二、一切都是对象
    1.用引用操作对象
    存储到什么地方:
    寄存器;堆栈;堆;常量存储;非RAM存储。
    2.必须有你创建所有的对象
    特例:基本类型。
    byte、short、int、long、float、double、boolean、char、void。
    高精度计算类:
    BigInteger和BigDecimal。
    BigInteger支持任意精度的整数位运算。
    BigDecimal支持任意定点数的运算。
    Java中数组。
    避免了C和C++中的数组越界等问题。
    3.永远不需要销毁对象
    作用域。由花括号的位置决定。
    对象的作用域。Java对象不具备基本类型一样的生命周期,,当用new创建一个java对象时,它可以存活于
    作用域之外。
    4.创建新的数据类型-类
    字段和方法。
    5.方法、参数和返回值
    方法名和参数列表合成位方法签名。
    6.构建Java程序
    static关键字.
    三、操作符
    1.静态导入。
    2.位运算。
    按位与 & 3&5结果是1 00000011 00000101 结论:都是1,取1,否则就取0. 另,负数按补码形式参加按位与运算
    按位或 | 3|5结果是7 00000011 00000101 结论:只要有一个为1,就取1,否则取0. 另,负数按补码形式参加按位与运算

    正数的原码就是它的本身,并且正数的原码、反码、补码都一样。
    负数的反码是原码位取反,符号位不变。负数的补码是反码+1后的值。
    

    四、控制执行流程
    循环、判断、break、continue、switch、do-while、while、foreach、for、三目运算符等。
    五、初始化和清理
    1.使用构造器确保初始化
    Java中创建和初始化绑在一起,两者不能分离。
    2.方法重载
    相同方法名和返回值类型,不同的参数列表。(同一个类中)
    区分方法重写:相同方法名、返回值类型和参数列表。访问修饰符不能比父类更严格;不能比父类抛出更多的异常。(基类和派生类之间)
    3.默认构造器
    4.this关键字
    代表当前类对象的引用。
    区分同名属性和变量(如同名参数)。
    调用其他被重载的构造器。
    static关键字。
    5.终结清理和垃圾回收
    工作原理:一旦垃圾回收器准备释放对象占用的存储空间,将首先调用器finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
    所以我们可以使用finalize()方法,在垃圾回收时做一些重要的工作。
    ①对象可能不被垃圾回收;②垃圾回收并不等于析构;③垃圾回收只和内存有关。
    垃圾回收器是怎么工作的。堆内存、引用计数、停止-复制、标记-清扫、即时编译器JIT
    6.成员的初始化
    7.构造器初始化
    父类静态成员及static块执行->子类静态成员及static块执行->父类构造代码块->父类构造器->子类构造代码块->子类构造器
    8.数组的初始化
    六、访问权限控制
    1.代码组织
    2.接口和实现
    3.类的访问权限
    类既不可以是private,也不可以是protected。类的访问权限只要包访问权限和public·。
    七、复用类
    1.组合语法
    2.继承语法
    3.final关键 final->基本类型 表示其值不变,final->引用类型 表示其引用指向不变
    空白final,须在定义处、构造器或创建对象时进行初始化,否则会报编译错误。
    final参数,基本类型无法修改,引用类型保持其引用指向不能改变。它常用于向匿名内部类传递数据。
    final方法,禁止方法覆盖时。类中所有private的方法都隐式地指定为final。
    4.初始化和加载顺序
    八、多态
    1.基类中的private方法,在父类中出现,算不上重写,类似于一个全新方法。
    2.构造器和多态
    构造器其实是static的,隐式static。
    九、接口
    1.完全解耦
    2.Java中的多重继承
    3.接口中的域自动都是static和final及public的
    4.接口中的域不能是空final,但是可以被非常量式的初始化
    5.接口可以嵌套在其他类或接口中.而且其默认就是public修饰
    十、内部类
    1.内部类无需任何条件,拥有外部类的所有权限
    2.对外部类的引用,使用“外部类名字.this”。创建内部类对象:“外部类对象引用.new 内部类名()”。但是如果是静态内部类,就不要外部的引用
    十一、持有对象
    泛型和类型安全的容器
    Java容器类类库的用途是保存对象,并划分两个不同的概念:Collection(一个独立元素序列),Map(一组成对的键值对)
    HashSet是使用比较复杂的方式存储的,它是最快获取元素的方式。如果存现顺序很重要,可以使用TreeSet,它按照比较结果的升序来存储对象。
    LinkedHashSet是按照添加的顺序保存对象
    HashMap提供了最快的查找技术,也没有按照明显的顺序来保存元素。TreeMap按照比较结果的升序来来保存键。LinkedHashMap则按照插入的顺序保存键,
    同时还保留了HashMap的查找速度。
    iterator迭代器 next()和hasNext()方法
    listInterator
    HashSet、TreeSet、LinkedHashSet
    Map、HashMap、TreeMap、LinkedHashMap
    Queue 先进先出的容器。
    Collection和Iterator。
    Foreach与迭代器。
    十二、通过异常处理错误
    基本异常、异常参数
    捕捉异常
    创建自定义异常
    重新抛出异常
    异常链:Error、Exception、RuntimeException
    Error:编译时和系统错误
    Exception:可以抛出异常的基本类型
    RuntimeException是一个特例
    使用finally进行清理:涉及到break和coutinue时,finally子句也会执行。
    异常丢失。注意异常丢失的特殊情况。
    异常的限制。派生类不能抛出比基类更多的异常。包括方法在内;构造方法不受约束。派生构造法方法中不能捕捉基本异常,只能进行继续抛出
    构造器,try-catch的嵌套。
    异常匹配。“最近”原则。
    十三、字符串
    String对象不可变。
    格式化修饰符。%d,%f,%s,%c
    format()和printf()是等价的。
    Formatter类。
    正则表达式。Java中\表示正则中的一个斜线。\\表示普通斜线。
    替换操作。
    十四、类型信息
    RTTI技术。
    Class对象。
    Class

    展开全文
  • java base

    2021-01-05 22:48:26
    基本数据类型 4类 8种 整数(byte short int long) 浮点(float double) 布尔(boolean)字符(char) 引用数据类型 类,接口,数组 3. 内存分析 栈:stake – 存放:局部变量 – 先迚后出,自下而上存储 ...
  • Java IO流

    2018-12-07 22:31:37
    本周学习中学习了Java 的IO流 inputStream 、outputStream 是所有输入\输出流的父类。 字节流:FileInputStream、FileOutputStream 文件的读取: 1、建立联系 (创建file对象) 2、选择流 3、操作: byte[] xx = new...
  • JAVA从入门到基础(九) 一JAVA堆分析一 JVM中的内存区间 堆 永久区 线程栈 直接内存 二 内存溢出原因 堆溢出:占用大量堆空间,直接溢出,解决方法:增大堆空间,及时释放内存 public static void main(String args[]...
  • 但如果表示投放广岛长崎的原子弹释放出的能量,就需要使用 long 类型了。byte 和 short 类型主要用于特定的应用场合,例如,底层的文件处理或者需要控制占用存储空间量的大数组。八进制有一个前缀 0,例如 010 对应...
  • Java7新特性,支持使用try后面跟随()括号管理释放资源 例如通常使用try代码块 1 try { 2 fis = new FileInputStream(source); 3 fos = new FileOutputStream(target); 4 5 byte[] buf = new byte[1024]; 6...
  • javaIO流

    2021-01-30 22:55:42
    javaIO流 流的关闭原则:先开后关,后开先关。 一、字节流 一切皆为字节 【字节输出流OutputStream】 字节输出流的所有类的超类,将指定的字节信息写出到目的地 方法 public void close() 关闭此输出流并...
  • java1

    2012-07-30 18:14:36
    局部变量:不是声明在类体括号里面的变量 ... 参数传递时,简单类型进行值转递 (参数进行传递时都会先去栈中生成一个副本的,使用结束后释放)   自动类型提升:  byte a = 1;  byte b = 2;  a
  • java-IO流

    2020-11-03 10:01:46
    IO流 字节流 字节输出流 java.io.outputStream .../*java.io.outputStream:字节输出流 此抽象类是表示输出字节流的所有类的超类。... public void close() : 关闭此输出流... public void write(byte[] b):将b.length
  • Java7新特性,支持使用try后面跟随()括号管理释放资源 例如通常使用try代码块 try { fis = new FileInputStream(source); fos = new FileOutputStream(target); byte[] buf = new byte[8192]; ...
  • java-缓冲流

    2020-11-03 16:51:36
    java.io.BufferedOutputStream extends OutputStream BufferedOutputStream :字节缓冲输出流 继承自父类的共性成员方法: public void close() : 关闭此输出流并释放与此流相关联的任何系统资源。 public void ...
  • Java易错点1

    2021-06-11 15:04:01
    定义变量时,就在栈中分配内存空间,当超过变量的作用域后,会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 存取速度比堆要快,仅次于寄存器 数据可以共享 存在栈中的数据大小与...
  • java刷题每日之20180821

    2018-08-21 21:02:40
    java7之前支持char、int、byte等但不支持string java7后支持string方便了switch操作 2、在Java中,对于不再使用的内存资源,如调用完成的方法,“垃圾回收器”会自动将其释放。( ) A.会 B.不会 解析:正确答案...
  • Java本身提供Java软件所需要的运行环境,Java应用可运行在安装了JRE(Java Runtime environment)的机器上,所以我们说Java是一个运行平台。 JRE: Java Runtime Environment,Java运行环境。 4:Java是一种软件部署环境 ...
  • Java 内存模型

    2012-06-28 22:09:50
    与C/C++一样,Java程序的内存也分为两个部分:栈内存和堆内存。...当超过变量的作用域后,Java会自动释放掉为该变量分配的内存空间。该内存空间可以立即被另作他用。  堆内存用来存放由new产生的对象。
  • java面试题

    2018-01-01 15:35:15
    36. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? 18 37. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 18 38. 比较truncate和delete 命令 18 39. 解释$ORACLE_...
  • JAVA存储堆栈内存问题

    2019-05-27 20:25:53
    Java基础中,通过new创建的对象存储在堆内存中,8大基本类型short,int,char,byte,boolean,float,double,long和对象的引用变量存储在栈内存中,那么具体是如何存储的? 栈:当在一段代码块定义一个变量时,...
  • Java IO tips

    2011-02-23 16:38:00
    Java IO操作最常犯的错误是忘记关闭所操作的Stream。这些Stream是跟操作系统的资源(如文件,网络)联系在一起的,而操作系统的资源是有限的,如果不能正确释放,会导致其它程序不能正常工作。 是不是所有的Stream都...
  • Java-初识OutputStream

    2020-07-18 16:46:13
    java.io.OutputStream:字节输出流 此抽象类是表示输出字节流的所有类的超类。 定义了一些子类共性的成员方法: - public void close() :关闭此输出流并释放与此流相关联的任何系统资源。 - public void flush...
  • java中堆和栈

    2017-03-24 13:51:49
    Java中把内存分为两种:栈内存和堆内存...代码中定义一个变量,Java就在栈中为这个变量分配内存空间,当超过变量的作用域时,Java会自动释放该变量的内存空间,该内存空间可以被使用。 堆内存:用来存放由new创建的对象
  • Java中的内存分配机制

    2018-02-03 11:16:54
    (分配和释放问题) 1. 与C++的对比:  (1) C++:被分配的对象,不使用后,需要人工手动释放(使用析构... int、char、short、long、byte、float、double、boolean 3. Java内存区域:  (1) 静态存储区域:全

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 266
精华内容 106
关键字:

java释放byte

java 订阅