java 文件加密
java 密码加密解密方法

java 密码加密解密方法在Java中,密码的加密和解密可以通过多种方式实现。
其中,常用的方法包括使用MessageDigest类进行加密,以及使用对称加密和非对称加密算法进行加密和解密。
一种常见的密码加密方法是使用MessageDigest类进行加密。
这可以通过以下步骤实现:首先,将密码转换为字节数组。
然后,使用MessageDigest类的getInstance方法获取特定的加密算法实例,例如SHA-256或MD5。
接下来,使用update方法将密码的字节数组传递给MessageDigest实例。
最后,使用digest方法获得加密后的字节数组,并将其转换为十六进制字符串或其他格式存储在数据库或其他地方。
另一种常见的方法是使用对称加密算法,例如AES或DES。
这些算法使用相同的密钥进行加密和解密。
在Java中,可以使用javax.crypto包中的类来实现对称加密。
通常,需要生成一个密钥并将其存储在安全的地方,然后使用该密钥对密码进行加密和解密。
此外,还可以使用非对称加密算法,例如RSA。
这种方法使用公钥对数据进行加密,然后使用私钥进行解密。
在Java中,可以使用java.security包中的类来实现非对称加密。
无论使用哪种方法,都需要注意密码安全的问题。
例如,密钥的安全存储和管理,以及密码传输过程中的安全性。
另外,还需要考虑密码的哈希加盐等技术来增加密码的安全性。
总之,在Java中实现密码的加密和解密有多种方法,开发人员可以根据实际需求和安全要求选择合适的加密算法和实现方式。
希望这些信息能够帮助你更好地理解Java中密码加密解密的方法。
java实现文件内容的加密和解密

java实现⽂件内容的加密和解密package com.umapp.test;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.security.Key;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.CipherInputStream;import javax.crypto.CipherOutputStream;import javax.crypto.KeyGenerator;public class TestDES {Key key;public TestDES(String str) {getKey(str);//⽣成密匙}/*** 根据参数⽣成KEY*/public void getKey(String strKey) {try {KeyGenerator _generator = KeyGenerator.getInstance("DES");_generator.init(new SecureRandom(strKey.getBytes()));this.key = _generator.generateKey();_generator = null;} catch (Exception e) {throw new RuntimeException("Error initializing SqlMap class. Cause: " + e);}}/*** ⽂件file进⾏加密并保存⽬标⽂件destFile中** @param file 要加密的⽂件如c:/test/srcFile.txt* @param destFile 加密后存放的⽂件名如c:/加密后⽂件.txt*/public void encrypt(String file, String destFile) throws Exception {Cipher cipher = Cipher.getInstance("DES");// cipher.init(Cipher.ENCRYPT_MODE, getKey());cipher.init(Cipher.ENCRYPT_MODE, this.key);InputStream is = new FileInputStream(file);OutputStream out = new FileOutputStream(destFile);CipherInputStream cis = new CipherInputStream(is, cipher);byte[] buffer = new byte[1024];int r;while ((r = cis.read(buffer)) > 0) {out.write(buffer, 0, r);}cis.close();is.close();out.close();}/*** ⽂件采⽤DES算法解密⽂件** @param file 已加密的⽂件如c:/加密后⽂件.txt* * @param destFile* 解密后存放的⽂件名如c:/ test/解密后⽂件.txt*/public void decrypt(String file, String dest) throws Exception {Cipher cipher = Cipher.getInstance("DES");cipher.init(Cipher.DECRYPT_MODE, this.key);InputStream is = new FileInputStream(file);OutputStream out = new FileOutputStream(dest);CipherOutputStream cos = new CipherOutputStream(out, cipher);byte[] buffer = new byte[1024];int r;while ((r = is.read(buffer)) >= 0) {System.out.println();cos.write(buffer, 0, r);}cos.close();out.close();is.close();}public static void main(String[] args) throws Exception {TestDES td = new TestDES("aaa");td.encrypt("e:/r.txt", "e:/r解密.txt"); //加密 td.decrypt("e:/r解密.txt", "e:/r1.txt"); //解密 }}。
java中如何给文件加密

java中如何给⽂件加密1、根据⾃⼰定的,从⽂件流中读取字节进⾏加密2、将加密后的字节写⼊⽂件。
md5加密:package com.ncs.pki.util;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5Test {private static MessageDigest digest = null;public synchronized static final String hash(String data) {if (digest == null) {try {digest = MessageDigest.getInstance("MD5");} catch (NoSuchAlgorithmException nsae) {System.err.println("Failed to load the MD5 MessageDigest. "+ "Jive will be unable to function normally.");nsae.printStackTrace();}}// Now, compute hash.digest.update(data.getBytes());return encodeHex(digest.digest());}public static final String encodeHex(byte[] bytes) {StringBuffer buf = new StringBuffer(bytes.length * 2);int i;for (i = 0; i < bytes.length; i++) {if (((int) bytes[i] & 0xff) < 0x10) {buf.append("0");}buf.append(Long.toString((int) bytes[i] & 0xff, 16));}return buf.toString();}public static String test(){return null;}/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(MD5Test.hash("123456"));}}3des加密:package com.ncs.pki.util;import java.security.Key;import java.security.SecureRandom;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class DesEncrypt {/**** 使⽤DES加密与解密,可对byte[],String类型进⾏加密与解密密⽂可使⽤String,byte[]存储.** ⽅法: void getKey(String strKey)从strKey的字条⽣成⼀个Key** String getEncString(String strMing)对strMing进⾏加密,返回String密⽂ String* getDesString(String strMi)对strMin进⾏解密,返回String明⽂**byte[] getEncCode(byte[] byteS)byte[]型的加密 byte[] getDesCode(byte[] * byteD)byte[]型的解密*/Key key;/*** 根据参数⽣成KEY** @param strKey*/public void getKey(String strKey) {try {KeyGenerator _generator = KeyGenerator.getInstance("DES");_generator.init(new SecureRandom(strKey.getBytes()));this.key = _generator.generateKey();_generator = null;} catch (Exception e) {e.printStackTrace();}}/*** 加密String明⽂输⼊,String密⽂输出** @param strMing* @return*/public String getEncString(String strMing) {byte[] byteMi = null;byte[] byteMing = null;String strMi = "";BASE64Encoder base64en = new BASE64Encoder();try {byteMing = strMing.getBytes("UTF8");byteMi = this.getEncCode(byteMing);strMi = base64en.encode(byteMi);} catch (Exception e) {e.printStackTrace();} finally {base64en = null;byteMing = null;byteMi = null;}return strMi;}/*** 解密以String密⽂输⼊,String明⽂输出** @param strMi* @return*/public String getDesString(String strMi) {BASE64Decoder base64De = new BASE64Decoder();byte[] byteMing = null;byte[] byteMi = null;String strMing = "";try {byteMi = base64De.decodeBuffer(strMi);byteMing = this.getDesCode(byteMi);strMing = new String(byteMing, "UTF8");} catch (Exception e) {e.printStackTrace();} finally {base64De = null;byteMing = null;byteMi = null;}}return strMing;}/*** 加密以byte[]明⽂输⼊,byte[]密⽂输出** @param byteS* @return*/private byte[] getEncCode(byte[] byteS) {byte[] byteFina = null;Cipher cipher;try {cipher = Cipher.getInstance("DES");cipher.init(Cipher.ENCRYPT_MODE, key);byteFina = cipher.doFinal(byteS);} catch (Exception e) {e.printStackTrace();} finally {cipher = null;}return byteFina;}/*** 解密以byte[]密⽂输⼊,以byte[]明⽂输出** @param byteD* @return*/private byte[] getDesCode(byte[] byteD) {Cipher cipher;byte[] byteFina = null;try {cipher = Cipher.getInstance("DES");cipher.init(Cipher.DECRYPT_MODE, key);byteFina = cipher.doFinal(byteD);} catch (Exception e) {e.printStackTrace();} finally {cipher = null;}return byteFina;}public static void main(String[] args) {System.out.println("des demo");DesEncrypt des = new DesEncrypt();// 实例化⼀个对像des.getKey("MYKEY");// ⽣成密匙System.out.println("key=MYKEY");String strEnc = des.getEncString("111111");// 加密字符串,返回String的密⽂ System.out.println("密⽂=" + strEnc);String strDes = des.getDesString(strEnc);// 把String 类型的密⽂解密System.out.println("明⽂=" + strDes);}}。
java 文件锁 用法

java 文件锁用法Java 文件锁(File Lock)的用法引言:在Java编程中,文件锁(File Lock)是一种机制,用于控制对文件的并发访问,以避免多个线程或进程同时对同一个文件进行读写操作而引发的数据竞争和不一致问题。
它可以确保在一个时间点只有一个线程或进程可以对文件进行访问,并且其他线程或进程需要等待直到文件被释放。
本文将介绍Java中文件锁的用法,包括文件锁的基本概念、实现文件锁的不同方法和如何正确使用文件锁来保护文件的并发访问。
一、文件锁的基本概念1. 文件锁的定义文件锁(File Lock)是一种独占锁(Exclusive Lock),它允许一个进程在同一时间内独占地对文件进行读写操作。
当一个进程获取了文件锁后,其他进程将无法获取该锁,直到文件锁被释放。
2. 文件锁的类型Java提供了两种类型的文件锁:共享锁(Shared Lock)和独占锁(Exclusive Lock)。
共享锁允许多个进程同时对文件进行读操作,但不允许写操作;独占锁则只允许一个进程对文件进行读写操作。
在实际应用中,可以根据需要选择使用适合的锁类型。
二、实现文件锁的不同方法1. 使用FileChannel实现文件锁Java的NIO(New IO)库提供了FileChannel类,该类可以用于实现文件锁。
通过FileChannel的lock方法可以获取文件的独占锁或共享锁,使用tryLock方法可以尝试获取锁并返回锁的状态。
示例代码:获取文件的FileChannel对象FileChannel channel = new RandomAccessFile("file.txt", "rw").getChannel();获取文件的独占锁FileLock lock = channel.lock();或者获取文件的共享锁FileLock lock = channel.lock(0, Long.MAX_VALUE, true);尝试获取文件的独占锁,并返回锁的状态FileLock lock = channel.tryLock();2. 使用FileLock接口实现文件锁Java的NIO库还提供了FileLock接口,通过该接口可以实现对文件的锁定和解锁操作。
java aes加密方法

java aes加密方法AES(Advanced Encryption Standard)是一种高级加密标准,是一种对称加密算法,用于数据的加密和解密。
它是目前被广泛使用的加密算法之一,安全性较高。
在Java中,可以使用JCE(Java Cryptography Extension)库来实现AES加密。
以下是使用Java实现AES加密的示例代码。
1. 导入JCE库在Java中,需要先导入JCE库才能使用AES加密。
在导入JCE库之前,需要在系统中安装Java的JDK(Java Development Kit)。
2. 生成密钥在AES加密中,需要使用一个密钥来加密和解密数据。
可以使用Java中的KeyGenerator类来生成一个随机的AES密钥。
例如:```KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");keyGenerator.init(128);SecretKey secretKey = keyGenerator.generateKey();byte[] keyBytes = secretKey.getEncoded();```此代码将生成一个128位(16字节)长度的随机密钥,存储在keyBytes变量中。
3. 初始化加密器接下来,需要使用已生成的密钥来初始化加密器。
可以使用Java中的Cipher类来实现这个过程。
例如:上面的代码将生成一个Cipher加密对象,并使用生成的密钥secretKeySpec来初始化加密器。
此时,加密器已准备好加密数据。
4. 加密数据接下来,可以使用加密器将数据进行加密。
可以将要加密的数据存储在byte数组中,然后将byte数组传递给加密器进行加密。
例如:```byte[] data = "Encrypt me".getBytes("UTF-8");byte[] encryptedData = cipher.doFinal(data);```上面的代码将字符串“Encrypt me”转换为UTF-8编码的byte数组,并将byte数组传递给加密器进行加密。
Java 加密、解密Word文档

Java加密、解密Word文档对一些重要文档,我们为保证其文档内容不被泄露,常需要对文件进行加密,查看文件时,需要正确输入密码才能打开文件。
下面介绍了一种比较简单的方法给Word文件添加密码保护以及如何给已加密的Word文件取消密码保护。
使用工具:Free Spire.Doc for Java 2.0.0(免费版)Jar文件导入:方法1:通过官网下载控件包。
在程序下新建一个directory目录,并命名(本示例中命名为lib);将控件包lib文件夹下的jar(如下图1)复制到程序中新建的目录下。
复制jar文件后,鼠标右键点击jar文件,选择”Add as Library”。
完成导入(如下图2)。
图1:图2:方法2:通过maven导入。
参考导入方法。
Java代码示例【示例1】设置Word密码保护import com.spire.doc.*;public class Encrypt {public static void main(String[] args){//加载测试文档String input = "test.docx";String output= "result.docx";Document doc = new Document(input);//调用方法加密文档doc.encrypt("123");//保存加密后的文档doc.saveToFile(output);}}文件加密结果:【示例2】取消Word密码保护import com.spire.doc.*;public class Decrypt {public static void main(String[] args){//加载带密码的文件,输入原密码并解除Document doc = new Document();doc.loadFromFile("result.docx",FileFormat.Docx_2013,"123");//将解密后的文档另存doc.saveToFile("Decrypt.docx",FileFormat.Docx_2013);}}运行程序后,生成的文件将不再有密码保护。
java中常用的zip加密方法

文稿:标题:深度探讨Java中常用的Zip加密方法在日常编程开发中,我们经常会遇到对文件进行压缩和加密的需求。
而在Java中,Zip是一种常用的文件压缩格式,而对Zip文件进行加密也是经常需求之一。
本文将从简单到复杂,由浅入深地探讨Java中常用的Zip加密方法,以帮助您全面理解和灵活运用这一技术。
一、基本概念:Zip文件和加密方法在谈论Zip加密方法之前,我们首先来了解一下Zip文件的基本概念以及加密方法的原理。
Zip文件是一种常见的文件压缩格式,它能将多个文件或文件夹打包成一个文件,以减小文件大小,便于传输和存储。
而加密则是通过对文件内容进行转换或者使用密码算法,以使文件内容对他人不可读或不可用。
二、Zip加密的基本用法在Java中,可以使用`java.util.zip`包中的`ZipOutputStream`和`ZipEntry`类来对文件进行压缩,同时也可以通过密码来对Zip文件进行加密和解密。
通过简单的示例代码,我们可以很容易地了解到如何使用Java对Zip文件进行加密和解密的基本用法。
三、常见的Zip加密方法除了基本用法之外,Java中还提供了一些常见的Zip加密方法,如使用密码对Zip文件进行加密、使用AES算法对Zip文件进行加密等。
这些方法各自有着不同的特点和适用场景,我们可以根据需求选择最合适的方法来进行实现。
四、实践操作:示例演练在本节中,我们将结合实际的示例演练来对之前所学习到的Zip加密方法进行实际操作。
通过实际的演练,我们可以更加深入地理解和掌握这些方法的具体细节和注意事项。
五、个人观点和总结在本节中,我将共享我的个人观点和理解,以及对Zip加密方法在实际开发中的应用和注意事项进行总结和回顾。
通过对Zip加密方法的全面评估和实际应用,我们可以更好地掌握这一技术,并在实际项目中灵活运用。
结语通过本文的深度探讨和示例演练,我相信您已经对Java中常用的Zip 加密方法有了更深入的理解和掌握。
java 通用的aes256加密方法

java 通用的aes256加密方法摘要:1.AES256加密算法简介2.Java实现AES256加密方法3.应用场景及实例正文:一、AES256加密算法简介AES(高级加密标准,Advanced Encryption Standard)是一种对称加密算法,密钥长度分为128位、192位和256位。
AES256是其中安全性最高的一种,因其加密处理轮数更多,故安全性更高。
AES256算法主要包括以下几个部分:明文分组、密钥加密、初始向量IV、填充方式等。
二、Java实现AES256加密方法在Java中,我们可以使用Java Cryptography Extension(JCE)实现AES256加密。
以下是一个通用的Java AES256加密方法:```javaimport javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import java.nio.charset.StandardCharsets;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.Base64;public class AES256Util {private static final String ALGORITHM = "AES256";private static final String IV_ALGORITHM ="AES/CBC/PKCS5Padding";public static String encrypt(String secretKey, String content) { try {SecretKey key = newSecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), ALGORITHM);Cipher cipher = Cipher.getInstance(IV_ALGORITHM);byte[] iv = new byte[16];new SecureRandom().nextBytes(iv);IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);cipher.init(Cipher.ENCRYPT_MODE, key, ivParameterSpec);byte[] encryptedContent =cipher.doFinal(content.getBytes(StandardCharsets.UTF_8));returnBase64.getEncoder().encodeToString(encryptedContent);} catch (Exception e) {throw new RuntimeException("AES256 encryption failed", e);}}// 解密方法省略,参考上述加密方法的实现方式}```三、应用场景及实例1.加密文件:可以利用AES256加密算法对文件进行加密和解密,确保数据安全。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.2.1 文件加密4.程序模板请按模板要求,将【代码1】~【代码6】替换为Java程序代码。
SecretExample.javaimport java.io.*;public class SecretExample{public static void main(String args[ ]){File fileOne=new File("hello.txt"),fileTwo=new File("hello.secret");char b[]=new char[100];try{FileReader in=【代码1】// 创建指向fileOne的字符输入流FileWriter out=【代码2】// 创建指向fileTwo字符输出流int n=-1;while((n=in.read(b))!=-1){for(int i=0;i<n;i++){b[i]=(char)(b[i]^'a');}【代码3】// out将数组b的前n单元写到文件}【代码3】// out关闭in=【代码4】// 创建指向fileTwo的字符输入流System.out.println("加密后的文件内容:");while((n=in.read(b))!=-1){String str=new String(b,0,n);System.out.println(str);}in=【代码5】// 创建指向fileTwo的字符输入流System.out.println("解密后的文件内容:");while((n=in.read(b))!=-1){for(int i=0;i<n;i++){b[i]=(char)(b[i]^'a');}System.out.printf(new String(b,0,n));}【代码6】// in关闭}catch(IOException e){System.out.println(e);}}}9.2.2 给文件的内容添加行号4.程序模板按模板要求,将【代码1】~【代码14】替换为Java程序代码。
ReadExample.javaimport java.io.*;public class ReadExample{public static void main(String args[ ]){File file=new File("c:/1000","hello.txt");File tempFile=new File("temp.text");try{FileReader inOne=【代码1】// 创建指向文件file的输入流BufferedReader inTwo= 【代码2】// 创建指向inOne file的输入流FileWriter tofile=【代码3】// 创建指向文件tempFile的输出流BufferedWriter out=【代码4】// 创建指向tofile的输出流String s=null;int i=0;s=【代码5】// inTwo读取一行while(s!=null){i++;out.write(i+" "+s);out.newLine();s=【代码6】// inTwo读取一行}inOne.close();inTwo.close();out.flush();out.close();tofile.close();inOne=【代码7】// 创建指向文件tempFile的输入流inTwo= 【代码8】// 创建指向inOne file的输入流tofile=【代码9】// 创建指向文件file的输出流out=【代码10】// 创建指向tofile的输出流while((s=【代码11】)!=null) // inTwo读取一行{out.write(s);out.newLine();}inOne.close();inTwo.close();out.flush();out.close();tofile.close();inOne=【代码12】// 创建指向文件file的输入流inTwo=【代码13】// 创建指向inOne file的输入流while((s=【代码14】)!=null) // inTwo读取一行{System.out.println(s);}inOne.close();inTwo.close();tempFile.delete();}catch(IOException e){System.out.println(e);}}}9.2.3 文件读取与模式匹配4.程序模板按模板要求,将【代码1】~【代码6】替换为Java程序代码。
PatternExample.javaimport java.io.*;import java.util.*;import java.util.regex.*;public class PatternExample{public static void main(String args[ ]){File file=【代码1】// 该文件是某一个java源文件try{FileReader firstIn=【代码3】// 创建指向file的字符输入流BufferedReader secondIn=【代码4】// 创建指向firstIn 缓冲流StringWriter out=【代码5】// 创建指向内存的字符串输出流String s=null;while((s=secondIn.readLine())!=null){【代码5】// out将s写入内存}String content=【代码6】// out获取曾写入到内存中的全部字符firstIn.close();secondIn.close();out.close();Pattern p;Matcher m;p=pile("[\\s(]{1}[A-Z]+\\w+");m=p.matcher(content);TreeSet<String> tree=new TreeSet<String>();while(m.find()){String str=m.group();str=str.substring(1);tree.add(str);}Iterator<String> iter=tree.iterator();System.out.println(file.getName()+"使用了如下的类:");while(iter.hasNext()){String item=iter.next();System.out.println(item);}}catch(IOException e){System.out.println(e);}}}9.2.4 读写基本类型数据4.程序模板按模板要求,将【代码1】~【代码21】替换为Java程序代码。
NumberExample.javaimport java.io.*;public class NumberExample{public static void main(String args[]){int a1=12,a2=1180;long b=808080;float x1=3.14F,x2=12.456F;double d=1234.9876;boolean boo1=true,boo2=false;char c='我';File f=【代码1】//创建文件。
try{FileOutputStream fos=【代码1】// 创建指向f文件输出流DataOutputStream out_data=【代码2】// 创建指向fos 的数据输出流【代码2】// out_data将数据a1写入到文件【代码3】// out_data将数据a2写入到文件【代码4】// out_data将数据b写入到文件【代码5】// out_data将数据x1写入到文件【代码6】// out_data将数据x2写入到文件【代码7】// out_data将数据d写入到文件【代码8】// out_data将数据boo1写入到文件【代码9】// out_data将数据boo2写入到文件【代码10】// out_data将数据c写入到文件}catch(IOException e){}try{FileInputStream fis=【代码11】// 创建指向f文件输入流DataInputStream in_data=【代码12】// 创建指向fis 的数据输入流System.out.println(【代码13】); // in_data读取int整数System.out.println(【代码14】); // in_data读取int整数System.out.println(【代码15】); // in_data读取long整数System.out.println(【代码16】); // in_data读取float数System.out.println(【代码17】); // in_data读取float数System.out.println(【代码18】); // in_data读取double数System.out.println(【代码19】); // in_data读取boolean数据System.out.println(【代码20】); // in_data读取boolean数据System.out.print(【代码21); // in_data读取char数据}catch(IOException e){}}}9.2.5 对象的写入与读取4.程序模板按模板要求,将【代码1】~【代码9】替换为Java程序代码。
ObjectExample.javaimport java.util.*;import java.io.*;public class ObjectExample{public static void main(String args[ ]){Calendar calendar1=Calendar.getInstance(); // 创建一个日历对象Calendar calendar2=Calendar.getInstance(); // 创建一个日历对象calendar1.set(1949,9,1); // 将日历时间设置为1949年10月1日,注意9表示十月calendar2.set(2005,9,1);try{File f=【代码1】// 创建一个名字为"a.txt"的文件FileOutputStream fileOut=【代码2】// 创建指向文件f的文件输出流ObjectOutputStream objectOut=【代码3】// 创建指向文件fileOut的对象输出流【代码4】// objectOut写对象calendar1到文件【代码5】// objectOut写对象calendar2到文件FileInputStream fileIn=【代码6】// 创建指向文件f的文件输入流ObjectInputStream objectIn【代码7】// 创建指向文件fileIn 的对象输入流Calendar cloneCalendar1=【代码8】// objectOut读出对象Calendar cloneCalendar2=【代码9】// objectOut读出对象cloneCalendar1.setTime(new Date());cloneCalendar2.set(9999,9,1);int 年=calendar1.get(Calendar.YEAR),月=calendar1.get(Calendar.MONTH)+1,日=calendar1.get(Calendar.DAY_OF_MONTH);System.out.printf("\ncalendar1的日期:%d-%d-%d",年,月,日);年=calendar2.get(Calendar.YEAR);月=calendar2.get(Calendar.MONTH)+1;日=calendar2.get(Calendar.DAY_OF_MONTH);System.out.printf("\ncalendar2的日期:%d-%d-%d",年,月,日);年=cloneCalendar1.get(Calendar.YEAR);月=cloneCalendar1.get(Calendar.MONTH)+1;日=cloneCalendar1.get(Calendar.DAY_OF_MONTH);System.out.printf("\ncloneCalendar1的日期:%d-%d-%d",年,月,日);年=cloneCalendar2.get(Calendar.YEAR);月=cloneCalendar2.get(Calendar.MONTH)+1;日=cloneCalendar2.get(Calendar.DAY_OF_MONTH);System.out.printf("\ncloneCalendar2的日期:%d-%d-%d",年,月,日);}catch(Exception event){System.out.println(event);}}}9.2.6 使用RandomAcessFile类处理文件4.程序模板按模板要求,将【代码1】~【代码8】替换为Java程序代码。