总览如下: 魔数与Class文件的版本 1.魔数0XCAFEBABE 2.次版本号和主版本号 常量池 1.类和接口的全限定名 2.字段的名称和描述符 3.方法的名称和描述符 访问标志 1.类的访问信息...因为Java不支持多重继承,所以父类索引只有一个,除了java.lang.Object外,所有Java类都有父类,因此除了java.lang.Object,所有java类的父类索引都不为0。...预定义的属性如下: 属性名称 使用位置 含义 Code 方法表 Java代码编译成的字节码指令 ConstantValue 字段表 final关键字定义的常量值 Deprecated 类、方法表、字段表...InnerClasses 类文件 内部类列表 LineNumberTable Code属性 Java源码的行号和字节码指令的对应关系 LocalVariableTable Code属性 方法局部变量描述...SourceFile 类文件 记录源文件名称 SourceDebugExtension 类文件 JDK1.6新增,用于存储额外的调试信息。
在这篇文章中我们来一起看一下 class 文件的结构,来进一步加深我们对虚拟机的类加载机制和类机制的理解。本文参考了 《深入理解 Java 虚拟机》一书。...解析 .class 文件 我们都知道一个 Java 类(.java)文件在被 Java 编译器(javac) 编译过后,如果语法没有错误,则会生成一个对应的 .class 文件,这个 .class...在 .class 文件中值为 CAFEBABY(咖啡宝贝?),这个值非常有意思,因为其意义正好对应 Java 的图标: ? 来杯 82 年的 Java 压压惊?...29 的常量,即为 ClassContent.java,这也就是编译出这个 .class 文件的 Java 文件的文件名。 ...好了,在这篇文章中我们通过一个例子来看了一下类文件格式,相信你对 Java 类机制有了一个更深的理解。如果博客中有什么不正确的地方,还请多多指点。如果觉得这篇文章对您有帮助,请不要吝啬您的赞。
package io.github.linwancen.code.modify; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets...; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; import java.util.concurrent.ConcurrentSkipListSet...; import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Matcher; import java.util.regex.Pattern...; import java.util.stream.Collectors; /** * 删除未使用的类 * 仅依赖 JDK */ public class DeleteNotUsage...("target|.git"); /** * 添加自行定义的会被调用到的注解或关键字 */ private static final Pattern USED_PATTERN
java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException...; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.MappedByteBuffer; import...java.nio.channels.FileChannel; import java.nio.channels.FileChannel.MapMode; /** * 说明:文件处理 * 作者:FH...Admin * from:fhadmin.cn */ public class FileUtil { /**获取文件大小 返回 KB 保留3位小数 没有文件时返回0 * @param...filepath 文件完整路径,包括文件名 * @return */ public static Double getFilesize(String filepath){ File backupath
大家好,又见面了,我是你们的朋友全栈君。 今天简单写了一下读写文件用的工具类,方便后面开发或者测试时直接使用。...import lombok.Cleanup; import java.io.*; import java.util.ArrayList; import java.util.List; public class...FileUtils { //逐行读取文件内容返回内容列表 public static List readLine(String path){ List...Long filelength = file.length(); //获取同长度的字节数组 byte[] filecontent = new byte[...,而是加到文件的后面。
导言 Java提供了丰富的文件操作功能,其中java.io.File类是用于处理文件和目录的主要类之一。通过File类,我们可以创建、删除、重命名和检查文件或目录的存在等操作。...本文将详细介绍Java中的File类及其常见用法,并提供一些示例代码。 一、文件类概述 File类是Java中处理文件和目录的基础类之一。...delete(): 删除文件或目录。 二、创建文件 在Java中,我们可以使用File类来创建新的文件。...需要注意的是,File类在Java 7及更高版本中已过时,推荐使用java.nio.file包中的Path和Files类进行文件操作。但是,File类仍然可以在旧代码中使用。...希望本文对你理解和使用Java的文件类有所帮助!
根据 Java 虚拟机规范,类文件由单个 ClassFile 结构组成: ClassFile { u4 magic; //Class 文件的标志...Class文件字节码结构组织示意图 (之前在网上保存的,非常不错,原出处不明): 类文件字节码结构组织示意图 2.1 魔数 u4 magic; //Class 文件的标志 每个 Class 文件的头四个字节称为魔数...高版本的 Java 虚拟机可以执行低版本编译器生成的 Class 文件,但是低版本的 Java 虚拟机不能执行高版本编译器生成的 Class 文件。...interfaces[interfaces_count];//一个雷可以实现多个接口 类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名,由于 Java 语言的单继承,所以父类索引只有一个...,除了 java.lang.Object 之外,所有的 java 类都有父类,因此除了 java.lang.Object 外,所有 Java 类的父类索引都不为 0。
.*; import java.io.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util....*; /** * 使用Java的mail包解析 标准的 .eml格式的邮件文件 * * @author * @date 2019/08/07 */ public class EmlUtil...setResult(Map result) { EmlUtil.result = result; } /** * 用于保存发送附件的文件名的集合...} public void setPort(int port) { this.port = port; } /** * 用于保存发送附件的文件名的集合...* * @param emlPath 文件路径 */ public Map parserFile(String emlPath)
使用 java 手动执行生成的类文件# 下面以执行使用 mvn compile 编译好的 cn.gson.oasys.OasysApplication Java 类为例。...你可以使用 java 命令直接运行编译后的 Java 类文件,但是你需要明确指定所需要的类路径 -cp 或者 -classpath,包括你的项目的所有依赖库。...:target/dependency/* 指定了类路径,包含了你的项目编译后的类文件和所有的依赖库。...cn.gson.oasys.OasysApplication 是你的应用的 main 方法所在的类的完全限定名。...这种方式虽然可以运行你的 Spring Boot 应用,但是相比于使用 mvn exec:java 或者 mvn spring-boot:run,它更加复杂,需要手动管理类路径。
文件的 JDK 次版本号。...ACC_PUBLIC, ACC_SUPER 2.2.4 类索引、父类索引和接口索引集合 在class文件中,将用这三项来标识类的继承关系。...索引项 长度 说明 this_class 2个字节 类索引,用于确定这个类的全限定名 super_class 2个字节 父类索引,用于确定这个类父类的全限定名(Java语言不允许多重继承,故父类索引只有一个...除了java.lang.Object类之外所有类都有父类,故除了java.lang.Object类之外,所有类该字段值都不为0) interfaces_count 2个字节 接口索引计数器,如果该类没有实现任何接口...的内容,#12 即常量池中的HelloByteCode.java 这个类属性值表示的内容为: SourceFile: "HelloByteCode.java" 至此,我们完整解析了class类的字节码
; import java.util.List; /** * @program: simple_tools * @description: 文件工具类 * @author: ChenWenLong...} fileList.add(file.getName()); } } /** * 功能描述: * 〈获取文件的绝对路径...return this.getClass().getClassLoader().getResource(fileName); } /** * 功能描述: * 〈获取文件的相对路径...file.getAbsolutePath().substring(baseDir.getAbsolutePath().length()+1); } /** * 功能描述: * 〈查询某个目录下的所有文件...searchFiles(dir,arrayList); return arrayList; } /** * 功能描述: * 〈递归获取某个目录下的所有文件
前言 众所周知,Java中有多种针对文件的操作类,以面向字节流和字符流可分为两大类,这里以写入为例: 面向字节流的:FileOutputStream 和 BufferedOutputStream 面向字符流的...,比较这些类写入文件的性能。...(每行内容均为“写入文件Data\n”),比较其耗费时间 横向比较:对于同一个文件操作类,比较写入不同行数内容情况下所耗费时间;本文以2的次方指数级增长行数 1 import java.io.File...后记 从以上分析可知(注意横坐标写入行数是指数级增加的),各个类的时间复杂度大致为O(k),其中不同的类的k不同,导致了最终巨大的差异。...且慢,让我们把写入文件的数据改一下: 1 import java.io.File; 2 import java.io.FileOutputStream; 3 import java.io.*
理解下头结点 1.头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度)。...2.有了头结点后,对在第一个元素结点前插入结点和删除第一个结点,其操作与对其它结点的操作统一了。 3.首元结点也就是第一个元素的结点,它是头结点后边的第一个结点。 4.头结点不是链表所必需的。...理解下头指针 1.在线性表的链式存储结构中,头指针是指链表指向第一个结点的指针,若链表有头结点,则头指针就是指向链表头结点的指针。 2.头指针具有标识作用,故常用头指针冠以链表的名字。...头指针是链表的必要元素。 ? 1.头指针是指链表指向第一个结点的指针 2.若链表有头结点,则是指向头结点的指针 3.头指针具有标识作用,用头指针冠以链表的名字 4.无论链表是否为空,头指针均存在
如果使用JDK1.5运行使用JDK1.6编译的Class文件,会报: java.lang.UnsupportedClassVersionError: Bad version number in .class...file 就是由于JDK1.6编译的文件版本号超过了JDK1.5虚拟机所接受的范围 Java class文件是二进制文件。...Class类文件结构 class文件的结构 简单讲,jvm的class文件是针对jvm的私家定制。只要运行在jvm上byte code,都需要按照class文件format来。否则jvm解析不了。...官网文档: The Java Virtual Machine class file format class文件时java虚拟机执行引擎的数据入口,也是java技术体系的基础支柱之一,了解class文件的结构对后面进一步了解虚拟机执行引擎有很重要的意义...,类的全限定名、字段、方法都是使用CONSTANT_Utf8_info类型常量来描述名称,而该常量的长度由2个字节表示,所以类的全限定名、字段名、方法名的最大长度不能超过2个字节所能表示的最大整数,也就是
在上期文章如何获取JVM堆转储文件中,介绍了几种方法获取JVM的转储文件,其中编程方法是里面唯一一个从JVM内部获取的方法。...这里就不演示了其他方法获取正在运行的应用程序的堆转储,重点放在了使用编程来获取转储文件的方法,并演示了如何使用jhat工具浏览/分析生成的二进制堆转储。...com.sun.management.HotSpotDiagnosticMXBean; import org.slf4j.Logger; import javax.management.MBeanServer; import java.lang.management.ManagementFactory...*/ private static volatile HotSpotDiagnosticMXBean hotspotMBean; /** * 下载内存转储文件...下面将生产好的heap.bin文件拉回到本地或者在服务端用jhat -port 8888 heap.bin工具进行处理,然后访问:http://localhost:8888即可查看当时JVM堆内存的使用情况
本文将为你介绍如果使用Java的Scanner类来读取或者解析CSV文件。...我的CSV文件(user.csv)内容如下 Rockey,22,India Bill,23,US Sonia,23,Germany 接下来我们首先从创建映射上述属性的实体User.java public...,你会发现该类支持文件和输入流作为输入方式,本例中我们采用文件的方式。...CSVParsingExample.java import java.io.File; import java.io.IOException; import java.util.ArrayList; import...(), hasNext() 方法可以很方便的帮助我们迭代数据,转化成我们想要的格式。
参考链接: Java文件类 摘要:在开发项目的过程中,有些参数或者数据等是需要经常改动的。比如:数据库的配置,ftp路径,落地文件的路径等等。...以下内容是在Java中读取配置文件的一些方法的介绍、使用。 ...Properties类 作用 Properties类主要用于读取Java的配置文件,可以读取后缀是.properties和.cfg的配置文件。 ...文件内容的格式是:键=值 ,比如:name=张三 文件中内容的注释可以用:#,比如:#我是被注释掉的内容 结构: Properties 类表示了一个持久的属性集。...; import java.util.Set; /** * 读取配置文件的工具类 * @author 52363 * */ public class ReadConfigurationFileUtils2
下面是一些根据常用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂。...其中jodd中提供的JavaUtil类中提供的方法足够我们使用,里面的方法写的非常简练,例如append,read等方法,封装更好,更符合面向对象, 这里面我写的一些方法可多都是模仿jodd,从里面进行抽取出来的.../** * 获取路径文件夹下的所有文件 * @param path * @return */ public static File[] getKeywordFiles(String path...; // 删除完里面所有内容 String filePath = folderPath; filePath = filePath.toString(); java.io.File myFilePath...= new java.io.File(filePath); myFilePath.delete(); // 删除空文件夹 } catch (Exception e) { log.error
代码示例 package com.simple.util.file; import java.io.File; import java.io.FileInputStream; import java.io.IOException...; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;...文件工具类 * @author: ChenWenLong * @create: 2019-12-31 10:11 **/ public class PropertiesUtils { public...IOException e) { e.printStackTrace(); } } /** * 功能描述: * 〈查询某个目录下的所有文件...searchFiles(dir,arrayList); return arrayList; } /** * 功能描述: * 〈递归获取某个目录下的所有文件
package com.fh.util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileNotFoundException...; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException...} catch (IOException e) { System.out.println(e); } return fileName+extName; } /** * 写文件到当前目录的...; import java.io.OutputStream; import java.net.URLEncoder; import javax.servlet.http.HttpServletResponse...* @param filePath //文件完整路径(包括文件名和扩展名) * @param fileName //下载后看到的文件名 * @return 文件名 */ public
领取专属 10元无门槛券
手把手带您无忧上云