Java基础系列19:使用JXL或者POI生成和解析Excel文件

简介:

一 简介

如题所示,当我们需要在Java中解析Excel文件时,可以考虑使用JXL或POI的API来解析。

二者的区别如下:

  • jxl现在基本上没被维护了,最近一次更新时间还是几年前。相反,poi属于Apache开源项目的一部分,更新维护得比较好,最新稳定版 POI 3.15 是今年(2016年)9月更新的,同时poi可以支持更高版本的excel,而jxl只能支持excel2003以及之前的版本

  • 小文件使用jxl解析效率比较高,但是因为支持的excel版本的限制,导致不能导出65535以上量级的数据

总之,我建议使用POI来生成解析excel文件。关于生成和解析excel文件的流程实际上跟Java生成和解析xml文件(PS:关于这部分的内容可以参考我的这篇文章:https://www.zifangsky.cn/596.html)是差不多的,因此我下面就直接贴示例代码了。当然,代码里面有详细的注释供大家参考

二 使用JXL生成和解析Excel文件

jxl-2.6.12.jar下载地址:http://maven.outofmemory.cn/net.sourceforge.jexcelapi/jxl/2.6/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package  cn.zifangsky.excel;
 
import  java.io.File;
 
import  jxl.Cell;
import  jxl.Sheet;
import  jxl.Workbook;
import  jxl.write.Label;
import  jxl.write.WritableSheet;
import  jxl.write.WritableWorkbook;
 
public  class  JXLDemo {
 
     /**
      * JXL创建Excel文件
     
      * @param fileUrl
      *            文件路径
      * @return null
      */
     public  static  void  createExcel(String fileUrl) {
         String[] title = {  "title1" "title2" "title3"  };
         // 创建Excel文件
         File firstExcelFile =  new  File(fileUrl);
 
         try  {
             // 创建工作簿
             WritableWorkbook workbook = Workbook.createWorkbook(firstExcelFile);
             // 创建sheet
             WritableSheet sheet = workbook.createSheet( "demo" 0 );
             Label label =  null // 单元格
             // 设置第一行的标题
             for  ( int  i =  0 ; i < title.length; i++) {
                 label =  new  Label(i,  0 , title[i]);
                 sheet.addCell(label);
             }
 
             // 添加几行数据
             for  ( int  i =  0 ; i < title.length; i++) {
                 for  ( int  j =  1 ; j <  11 ; j++) {
                     label =  new  Label(i, j, String.valueOf(i + j));
                     sheet.addCell(label);
                 }
             }
             workbook.write();
             workbook.close();
         catch  (Exception e) {
             e.printStackTrace();
         }
     }
 
     /**
      * JXL解析Excel文件
     
      * @param fileUrl
      *            文件路径
      * @return null
      */
     public  static  void  resolveExcel(String fileUrl) {
         try  {
             Workbook workbook = Workbook.getWorkbook( new  File(fileUrl));
             // 获取工作表中的第一个sheet
             Sheet sheet = workbook.getSheet( 0 );
             for  ( int  i =  0 ; i < sheet.getRows(); i++) {
                 for  ( int  j =  0 ; j < sheet.getColumns(); j++) {
                     Cell cell = sheet.getCell(j, i);
                     System.out.print(cell.getContents() +  " " );
                 }
                 System.out.println();
             }
         catch  (Exception e) {
             e.printStackTrace();
         }
 
     }
 
     public  static  void  main(String[] args) {
         JXLDemo.createExcel( "C:/Users/Administrator/Desktop/jxlExcel.xls" );
         JXLDemo.resolveExcel( "C:/Users/Administrator/Desktop/jxlExcel.xls" );
     }
 
}

生成的excel文件如下所示:

wKioL1hHhqmwrmsvAAAYfNGflEM684.png

最后输出如下:

1
2
3
4
5
6
7
8
9
10
11
title1 title2 title3 
1 2 3 
2 3 4 
3 4 5 
4 5 6 
5 6 7 
6 7 8 
7 8 9 
8 9 10 
9 10 11 
10 11 12

三 使用POI生成和解析Excel文件

jar包下载地址:http://poi.apache.org/download.html

(1)生成和解析低版本的Excel文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package  cn.zifangsky.excel;
 
import  java.io.File;
import  java.io.FileInputStream;
import  java.io.FileOutputStream;
import  java.io.IOException;
import  java.io.InputStream;
import  java.io.OutputStream;
 
import  org.apache.poi.hssf.usermodel.HSSFCell;
import  org.apache.poi.hssf.usermodel.HSSFRow;
import  org.apache.poi.hssf.usermodel.HSSFSheet;
import  org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
public  class  POIDemo {
 
     /**
      * POI创建Excel文件
     
      * @param fileUrl
      *            文件路径
      * @return null
      */
     public  static  void  createExcel(String fileUrl) {
         String[] title = {  "title1" "title2" "title3"  };
 
         // 创建工作簿
         HSSFWorkbook workbook =  new  HSSFWorkbook();
         // 创建sheet
         HSSFSheet sheet = workbook.createSheet( "demo" );
 
         // 设置第一行的标题
         HSSFRow firstRow = sheet.createRow( 0 );
         HSSFCell cell =  null ;
         for  ( int  i =  0 ; i < title.length; i++) {
             cell = firstRow.createCell(i);
             cell.setCellValue(title[i]);
         }
 
         // 添加几行数据
         for  ( int  i =  0 ; i <  10 ; i++) {
             HSSFRow nextRow = sheet.createRow(i +  1 );
             for  ( int  j =  0 ; j < title.length; j++) {
                 cell = nextRow.createCell(j);
                 cell.setCellValue(i * j);
             }
         }
 
         // 创建Excel文件
         File POIExcelFile =  new  File(fileUrl);
         try  {
             POIExcelFile.createNewFile();
             OutputStream outputStream =  new  FileOutputStream(POIExcelFile);
             workbook.write(outputStream);
 
             outputStream.close();
             workbook.close();
         catch  (IOException e) {
 
             e.printStackTrace();
         }
     }
 
     /**
      * POI解析Excel文件
     
      * @param fileUrl
      *            文件路径
      * @return null
      */
     public  static  void  resolveExcel(String fileUrl) {
         File POIExcelFile =  new  File(fileUrl);
         try  {
             InputStream inputStream =  new  FileInputStream(POIExcelFile);
             // 创建工作簿
             HSSFWorkbook workbook =  new  HSSFWorkbook(inputStream);
             // 创建sheet
             // HSSFSheet sheet = workbook.getSheetAt(0);
             HSSFSheet sheet = workbook.getSheet( "demo" );
 
             int  firstRowNum = sheet.getFirstRowNum();  // 第一行的行号
             int  lastRowNum = sheet.getLastRowNum();  // 最后一行的行号
             // 循环遍历每一个单元格
             for  ( int  row = firstRowNum; row <= lastRowNum; row++) {
                 HSSFRow eachRow = sheet.getRow(row);  // 每一行
                 int  firstCellNum = eachRow.getFirstCellNum();  // 第一列的列号
                 int  lastCellNum = eachRow.getLastCellNum();  // 最后一列的列号
                 for  ( int  column = firstCellNum; column < lastCellNum; column++) {
                     HSSFCell cell = eachRow.getCell(column);
                     if  (row ==  0 )
                         System.out.print(cell.getStringCellValue() +  " " );
                     else
                         System.out.print(cell.getNumericCellValue() +  " " );
                 }
                 System.out.println();
             }
             workbook.close();
         catch  (IOException e) {
             e.printStackTrace();
         }
     }
 
     public  static  void  main(String[] args) {
         POIDemo.createExcel( "C:/Users/Administrator/Desktop/poiExcel.xls" );
         POIDemo.resolveExcel( "C:/Users/Administrator/Desktop/poiExcel.xls" );
     }
 
}

生成的excel文件如下:

wKiom1hHhu_xurYsAAAZIyMwwV4273.png

控制台输出如下:

1
2
3
4
5
6
7
8
9
10
11
title1 title2 title3 
0.0 0.0 0.0 
0.0 1.0 2.0 
0.0 2.0 4.0 
0.0 3.0 6.0 
0.0 4.0 8.0 
0.0 5.0 10.0 
0.0 6.0 12.0 
0.0 7.0 14.0 
0.0 8.0 16.0 
0.0 9.0 18.0

(2)生成和解析高版本的Excel文件:

其实使用POI生成高版本的excel文件,只需要将HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell等类分别替换成:XSSFWorkbook、XSSFSheet、XSSFRow、XSSFCell等类即可,也就是将每个类最前面的“H”换成“X”即可

示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package  cn.zifangsky.excel;
 
import  java.io.File;
import  java.io.FileInputStream;
import  java.io.FileOutputStream;
import  java.io.IOException;
import  java.io.InputStream;
import  java.io.OutputStream;
 
import  org.apache.poi.xssf.usermodel.XSSFCell;
import  org.apache.poi.xssf.usermodel.XSSFRow;
import  org.apache.poi.xssf.usermodel.XSSFSheet;
import  org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
public  class  POIDemo2 {
 
     /**
      * POI创建高版本Excel文件
     
      * @param fileUrl
      *            文件路径
      * @return null
      */
     public  static  void  createExcel(String fileUrl) {
         String[] title = {  "title1" "title2" "title3"  };
 
         // 创建工作簿
         XSSFWorkbook workbook =  new  XSSFWorkbook();
         // 创建sheet
         XSSFSheet sheet = workbook.createSheet( "demo" );
 
         // 设置第一行的标题
         XSSFRow firstRow = sheet.createRow( 0 );
         XSSFCell cell =  null ;
         for  ( int  i =  0 ; i < title.length; i++) {
             cell = firstRow.createCell(i);
             cell.setCellValue(title[i]);
         }
 
         // 添加几行数据
         for  ( int  i =  0 ; i <  10 ; i++) {
             XSSFRow nextRow = sheet.createRow(i +  1 );
             for  ( int  j =  0 ; j < title.length; j++) {
                 cell = nextRow.createCell(j);
                 cell.setCellValue(i * j);
             }
         }
 
         // 创建Excel文件
         File POIExcelFile =  new  File(fileUrl);
         try  {
             POIExcelFile.createNewFile();
             OutputStream outputStream =  new  FileOutputStream(POIExcelFile);
             workbook.write(outputStream);
 
             outputStream.close();
             workbook.close();
         catch  (IOException e) {
 
             e.printStackTrace();
         }
     }
 
     /**
      * POI解析高版本Excel文件
     
      * @param fileUrl
      *            文件路径
      * @return null
      */
     public  static  void  resolveExcel(String fileUrl) {
         File POIExcelFile =  new  File(fileUrl);
         try  {
             InputStream inputStream =  new  FileInputStream(POIExcelFile);
             // 创建工作簿
             XSSFWorkbook workbook =  new  XSSFWorkbook(inputStream);
             // 创建sheet
             // HSSFSheet sheet = workbook.getSheetAt(0);
             XSSFSheet sheet = workbook.getSheet( "demo" );
 
             int  firstRowNum = sheet.getFirstRowNum();  // 第一行的行号
             int  lastRowNum = sheet.getLastRowNum();  // 最后一行的行号
             // 循环遍历每一个单元格
             for  ( int  row = firstRowNum; row <= lastRowNum; row++) {
                 XSSFRow eachRow = sheet.getRow(row);  // 每一行
                 int  firstCellNum = eachRow.getFirstCellNum();  // 第一列的列号
                 int  lastCellNum = eachRow.getLastCellNum();  // 最后一列的列号
                 for  ( int  column = firstCellNum; column < lastCellNum; column++) {
                     XSSFCell cell = eachRow.getCell(column);
                     if  (row ==  0 )
                         System.out.print(cell.getStringCellValue() +  " " );
                     else
                         System.out.print(cell.getNumericCellValue() +  " " );
                 }
                 System.out.println();
             }
             workbook.close();
         catch  (IOException e) {
             e.printStackTrace();
         }
     }
 
     public  static  void  main(String[] args) {
         POIDemo2.createExcel( "C:/Users/Administrator/Desktop/poiExcel2.xlsx" );
         POIDemo2.resolveExcel( "C:/Users/Administrator/Desktop/poiExcel2.xlsx" );
     }
 
}

生成的excel文件如下:

wKiom1hHhzPTamTSAAAsv2JrfEA885.png

最后输出如下:

1
2
3
4
5
6
7
8
9
10
11
title1 title2 title3 
0.0 0.0 0.0 
0.0 1.0 2.0 
0.0 2.0 4.0 
0.0 3.0 6.0 
0.0 4.0 8.0 
0.0 5.0 10.0 
0.0 6.0 12.0 
0.0 7.0 14.0 
0.0 8.0 16.0 
0.0 9.0 18.0

(3)结合Java解析xml创建excel导出模板:

如果我们需要定期将数据库中的部分数据导出到excel中,那么我们可以预先创建一个excel导出时的模板,以后每次导出数据时就可以根据这个模板导出格式统一的报表了。关于这个模板的格式我们可以定义在一个xml文件中,然后用Java解析这个xml文件读取样式即可

i)模板格式的xml文件student.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<? xml  version = "1.0"  encoding = "UTF-8" ?>
< excel  id = "student"  code = "student"  name = "学生信息导入" >
     < colgroup >
         < col  index = "A"  width = '17em' ></ col >
         < col  index = "B"  width = '17em' ></ col >
         < col  index = "C"  width = '17em' ></ col >
         < col  index = "D"  width = '17em' ></ col >
         < col  index = "E"  width = '17em' ></ col >
         < col  index = "F"  width = '17em' ></ col >        
     </ colgroup >
     < title >
         < tr  height = "16px"  rowspan = "2" >
             < td  colspan = "6"  value = "学生信息导入"  />
         </ tr >
         < tr  height = "14px"  rowspan = "1" >
             < td  colspan = "3"  value = "基础信息"  />
             < td  colspan = "3"  value = "扩展信息"  />
         </ tr >
     </ title >
     < thead >
         < tr  height = "12px" >
             < th  value = "编号"  />
             < th  value = "姓名"  />
             < th  value = "性别"  />
             < th  value = "年龄"  />
             < th  value = "出生日期"  />
             < th  value = " 爱好"  />
         </ tr >
     </ thead >
</ excel >

(2)模板创建示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
package  cn.zifangsky.excel;
 
import  java.io.File;
import  java.io.FileOutputStream;
import  java.io.OutputStream;
import  java.util.List;
 
import  org.apache.commons.lang.StringUtils;
import  org.apache.poi.ss.usermodel.HorizontalAlignment;
import  org.apache.poi.ss.util.CellRangeAddress;
import  org.apache.poi.xssf.usermodel.XSSFCell;
import  org.apache.poi.xssf.usermodel.XSSFCellStyle;
import  org.apache.poi.xssf.usermodel.XSSFFont;
import  org.apache.poi.xssf.usermodel.XSSFRow;
import  org.apache.poi.xssf.usermodel.XSSFSheet;
import  org.apache.poi.xssf.usermodel.XSSFWorkbook;
import  org.dom4j.Attribute;
import  org.dom4j.Document;
import  org.dom4j.Element;
import  org.dom4j.io.SAXReader;
 
public  class  CreateTemplate {
 
     public  static  void  main(String[] args) {
         SAXReader reader =  new  SAXReader();
         try  {
             Document document = reader.read( new  File( "src/cn/zifangsky/excel/student.xml" ));
             Element rootElement = document.getRootElement();
             // 创建工作簿
             XSSFWorkbook workbook =  new  XSSFWorkbook();
             // 创建sheet
             XSSFSheet sheet = workbook.createSheet( "Sheet0" );
             // 获取模板名称
             String templateName = rootElement.attributeValue( "name" );
 
             int  rowNum =  0 // 初始行号
             // 设置列宽
             Element colGroup = rootElement.element( "colgroup" );
             setColumnWidth(sheet, colGroup);
 
             // 设置标题
             Element title = rootElement.element( "title" );
             rowNum = setTitle(workbook, sheet, title, rowNum);
 
             // 设置表头
             Element thead = rootElement.element( "thead" );
             rowNum = setHead(workbook, sheet, thead, rowNum);
 
             // 创建Excel文件
             File POIExcelFile =  new  File( "C:/Users/Administrator/Desktop/template.xlsx" );
             POIExcelFile.createNewFile();
             OutputStream outputStream =  new  FileOutputStream(POIExcelFile);
             workbook.write(outputStream);
 
             outputStream.close();
             workbook.close();
         catch  (Exception e) {
             e.printStackTrace();
         }
     }
 
     /**
      * 单位转换
      */
     public  static  int  convert(String value) {
         // 得到宽度单位
         String unit = value.replaceAll( "\\d" "" );
         // 去除非数字字符
         String num = value.replaceAll( "\\D" "" );
 
         int  v =  0 ;
         if  (StringUtils.isNotBlank(unit) && StringUtils.isNotBlank(num))
             if  (unit.equals( "em" )) {
                 v = Math.round(Float.valueOf(num) *  267 .5F);
             else  if  (unit.equals( "px" )) {
                 v = Math.round(Float.valueOf(num) * 20F);
             }
         return  v;
     }
 
     /**
      * 设置列宽
      */
     private  static  void  setColumnWidth(XSSFSheet sheet, Element colGroup) {
         List<Element> cols = colGroup.elements();
         for  ( int  i =  0 ; i < cols.size(); i++) {
             Element col = cols.get(i);
 
             Attribute widthAttribute = col.attribute( "width" );
 
             // 设置宽度
             sheet.setColumnWidth(i, convert(widthAttribute.getValue()));
         }
     }
 
     /**
      * 设置标题相关内容
      */
     private  static  int  setTitle(XSSFWorkbook workbook, XSSFSheet sheet, Element title,  int  rowNum) {
         List<Element> trs = title.elements( "tr" );
 
         int  rspan =  0 // 横跨多少行
         int  cspan =  0 // 横跨多少列
         // 遍历多行标题
         for  ( int  i =  0 ; i < trs.size(); i++, rowNum += rspan) {
             Element tr = trs.get(i);
             Attribute rowSpan = tr.attribute( "rowspan" );
             Attribute height = tr.attribute( "height" );
             rspan = Integer.valueOf(rowSpan.getValue());
 
             List<Element> tds = tr.elements( "td" );
             XSSFRow row = sheet.createRow(rowNum);
 
             // 遍历标题中的多列子标题
             for  ( int  j =  0 , colNum =  0 ; j < tds.size(); j++, colNum += cspan) {
                 // 表格样式
                 XSSFCellStyle cellStyle = workbook.createCellStyle();
                 cellStyle.setAlignment(HorizontalAlignment.CENTER);  // 居中
 
                 Element td = tds.get(j);
                 XSSFCell cell = row.createCell(colNum);
 
                 Attribute colSpan = td.attribute( "colspan" );
                 Attribute value = td.attribute( "value" );
                 cspan = Integer.valueOf(colSpan.getValue());
                 if  (value !=  null ) {
                     cell.setCellValue(value.getValue());
 
                     // 设置字体
                     XSSFFont font = workbook.createFont();
                     font.setFontName( "宋体" );
                     font.setBold( true );
                     font.setFontHeight(( short ) convert(height.getValue()));
                     cellStyle.setFont(font);
                     cell.setCellStyle(cellStyle);
 
                     // 合并单元格
                     sheet.addMergedRegion( new  CellRangeAddress(rowNum, rowNum + rspan -  1 , colNum, colNum + cspan -  1 ));
                 }
             }
         }
         return  rowNum;
     }
 
     /**
      * 设置表头相关内容
      */
     private  static  int  setHead(XSSFWorkbook workbook, XSSFSheet sheet, Element thead,  int  rowNum) {
         List<Element> trs = thead.elements( "tr" );
         for  ( int  i =  0 ; i < trs.size(); i++, rowNum++) {
             Element tr = trs.get(i);
             XSSFRow row = sheet.createRow(rowNum);
             Attribute height = tr.attribute( "height" );
 
             List<Element> ths = tr.elements( "th" );
             for  ( int  j =  0 ; j < ths.size(); j++) {
                 // 表格样式
                 XSSFCellStyle cellStyle = workbook.createCellStyle();
                 cellStyle.setAlignment(HorizontalAlignment.CENTER);  // 居中
 
                 Element th = ths.get(j);
                 Attribute value = th.attribute( "value" );
                 XSSFCell cell = row.createCell(j);
                 if  (value !=  null ) {
                     cell.setCellValue(value.getValue());
 
                     // 设置字体
                     XSSFFont font = workbook.createFont();
                     font.setFontName( "宋体" );
                     font.setFontHeight(( short ) convert(height.getValue()));
                     cellStyle.setFont(font);
                     cell.setCellStyle(cellStyle);
                 }
             }
         }
         return  rowNum;
     }
}

最后生成的模板文件如下:

wKioL1hHh4mhc1TqAAAghtSOc9Y087.png注:我这里仅仅只是写了一个生成模板文件的测试代码,因此涉及到JDBC方面的操作就省略掉了



本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1880293,如需转载请自行联系原作者

相关文章
|
1月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
175 1
|
4月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
255 14
|
4月前
|
Python
Excel中如何批量重命名工作表与将每个工作表导出到单独Excel文件
本文介绍了如何在Excel中使用VBA批量重命名工作表、根据单元格内容修改颜色,以及将工作表导出为独立文件的方法。同时提供了Python实现导出工作表的代码示例,适用于自动化处理Excel文档。
|
4月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
137 0
|
4月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
311 0
|
5月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
467 5
|
6月前
|
人工智能 算法 安全
使用CodeBuddy实现批量转换PPT、Excel、Word为PDF文件工具
通过 CodeBuddy 实现本地批量转换工具,让复杂的文档处理需求转化为 “需求描述→代码生成→一键运行” 的极简流程,真正实现 “技术为效率服务” 的目标。感兴趣的快来体验下把
287 10
|
5月前
|
网络协议 安全 Java
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
340 0
|
8月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
8月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
838 29

热门文章

最新文章