A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/**
对文件进行加密处理

方法:
1.定义字节输入流接收文件地址
2.对读取到的字节进行异或运算^28
3.将新的字节文件写入到文件中
*/
import java.io.*;


public class LockFile

{
        public static void main(String[] args)
        {
                //lockFile("D:\\Java\\jdk1.8.0_92\\study\\Test\\Beer.java");
                unLockFile("D:\\Java\\jdk1.8.0_92\\study\\Test\\Beer.java.lock");
        }
        public static void lockFile(String adrs)
        {
                FileInputStream fis=null;  //定义字节输入流用于读取文件
                FileOutputStream fos=null;  //定义字节写出流用于写出文件
                File file=null;
                try
                {
                        file=new File(adrs);
                        fis=new FileInputStream(file);
                        fos=new FileOutputStream(adrs+".lock");
                        byte[] temp=new byte[1024*4];//定义缓冲数组
                        int len=0;//定义字节流写入缓冲数组长度
                        while ((len=fis.read(temp))!=-1)
                        {
                                for (int i=0;i<len ;i++ )
                                {
                                        temp[i]=(byte)(temp[i]^28);  //对字节数组进行加密处理
                                }
                                fos.write(temp,0,len);  //加密后的字节写入新文件
                        }
                       
                }
                catch (IOException e)
                {
                        return;
                }
                finally
                {
                        try
                        {
                                if (fis!=null)
                                {
                                        fis.close();
                                }
                        }
                        catch (IOException e)
                        {
                        }
                        try
                        {
                                if (fos!=null)
                                {
                                        fos.close();
                                }
                        }
                        catch (IOException e)
                        {
                        }
                }
                file.delete();
        }
        public static void unLockFile(String adrs)
        {
                FileInputStream fis=null;  //定义字节输入流用于读取文件
                FileOutputStream fos=null;  //定义字节写出流用于写出文件
                File file=null;
                try
                {
                        file=new File(adrs);
                        fis=new FileInputStream(file);
                        FileNameOperation fno=new FileNameOperation(file);
                        fos=new FileOutputStream(fno.removeSuffix());
                        byte[] temp=new byte[1024*4];//定义缓冲数组
                        int len=0;//定义字节流写入缓冲数组长度
                        while ((len=fis.read(temp))!=-1)
                        {
                                for (int i=0;i<len ;i++ )
                                {
                                        temp[i]=(byte)(temp[i]^28);  //对字节数组进行加密处理
                                }
                                fos.write(temp,0,len);  //加密后的字节写入新文件
                        }
                       

                }
                catch (IOException e)
                {
                        return;
                }
                finally
                {
                        try
                        {
                                if (fis!=null)
                                {
                                        fis.close();
                                }
                        }
                        catch (IOException e)
                        {
                        }
                        try
                        {
                                if (fos!=null)
                                {
                                        fos.close();
                                }

                        }
                        catch (IOException e)
                        {
                        }
                }
                file.delete();
       
        }
}

class FileNameOperation //定义一个文件名操作类
{
        private File file;
        private String adrs;
        FileNameOperation(File file)
        {
                this.file=file;
                this.adrs=file.getAbsolutePath();
        }
        public String removeSuffix()
        {
                int index=getIndex();
                return adrs.substring(0,index);
        }
        public String getSuffix()
        {
                int index=getIndex();
                return adrs.substring(index,adrs.length()-1);
        }
        public int getIndex()
        {
                return adrs.lastIndexOf(".");
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马