文档章节

实现代码转码的一个思路实现,解密.bak

nacy_
 nacy_
发布于 2017/05/18 21:27
字数 893
阅读 22
收藏 0

在使用了几个代码开发的IDE之后, 在换过几台不同的电脑敲代码之后, 一件尴尬的事情发生了...

    一不小心,这个IDE的环境使用GBK字符编码,换台电脑重新用相同的IDE打开项目.呵呵.....UTF-8来了.....乱码了有木有...!!!

so . 思前想后,决定自己弄个转码的小工具,也不用什么界面,什么复杂的展现,仅仅只需要将这个源码文件放到我们的项目中,重新创建一个Package,然后几个源码文件拷贝进来,然后指定一下转码的目录或文件,一个main方法的运行,搞定!!!!

 

先讲讲关于备份文件这件小事!

大家进行转码,或许或多或少的考虑到文件的备份问题.这里就备份文件浅尝实验了一下.

    在java中,我们使用创建一个File,指向一个目录时,可以通过listfiles()实现该目录下的所有文件(如果你没有加入过滤器的话!),这时,打个比方,有个文件需要转码,在转码之前有必要备份一个副本,这个时候,这个副本和源码的路径是相同的,在java中获取这个路径是很容易的,但是需要在这个路径上进行拼接什么,就不是那么一下子就能弄好的.

对比了一下,基本思路两个:

1 获取路径字符串进行解析,进行重新拼接一个新的文件路径进行文件备份.

2 使用一个自己定义的位置进行文件的备份.

 

先说说第二种,这种方式有点像"另存为"的意味.是比较好的.但是需要根据具体的需求来选择是否使用这种方法.

第一种方式比较繁琐的做法也有,比较的简单的做法也有.

繁琐是指你进行路径字符串的解析重拼接.

---问题在于,进行解析路径时,路径中'\'变成了转义关键字符.所以你解析或许是比较麻烦的.我尝试了一下,不是很好弄.

简单是指直接进行拼接,而不解析.

---这种方式的好处是字符串只拼接,不会有上述的方式的转义的问题.

比如有:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;

/**
 * Created by Administrator on 2017/5/18.
 */
public class demo {
    public static void main(String[]args) throws FileNotFoundException {
        File file = new File("c:/a/User.java");
        String path = file.getAbsolutePath();
        String bakpath = path+".bak";
        System.out.println(path);
        System.out.println(bakpath);
    }
}

结果:

D:\jdk1.7.0_15\bin\java ...
c:\a\User.java
c:\a\User.java.bak

Process finished with exit code 0

我们可以看见,字符串正常的拼接成功了.我们直接拿着这个c:\a\User.java.bak去使用IO流进行写,实现文件的备份,实际上,最后如你所想,产生了User.java.bak文件,而且这个文件和User.java具备相同的内容,只是进行转码之后,源文件会变成新的字符编码格式.而.bak文件则是原来的格式.

 

实际上用原文件的全名称加".bak"的做法也时常能见到.

 

如果解析看看:

String[] arr = path.split(".");
System.out.println("{result.length}"+arr.length);

结果是:

c:\a\User.java
c:\a\User.java.bak
{result.length}0

发现解析是失败的,我们的意图是用'.'为切割符进行字符串的切割,发现失败!本质原因就是转义了.

 

 

<!--

现在手上没有源码,有空再上源码..见谅.2017-5-18 pm

 

--> 

© 著作权归作者所有

nacy_
粉丝 0
博文 1
码字总数 893
作品 0
南通
私信 提问
视频内容谁来保护?阿里云视频加密解决方案架构及实现原理解析

视频行业的从业者——尤其是在线教育、财经分析等重视内容版权的播放平台都知道,视频安全是一个非常重要的基础需求。用户通过一次付费行为,就可以拿到付费视频的播放URL,将播放URL进行二次...

樰篱说
2017/09/13
0
0
.NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用

阅读目录 1.基本功能介绍 2.核心的SKGL源码分析 3.SKGL核心功能调用 5.资源   在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Softwar...

老朱第八
2017/11/11
0
0
java服务端、php、C#客户端rsa

最近公司项目需要用到rsa,故对rsa签名算法的一些概念和不同语言的使用进行了研究(具体实现算法则不钻牛角尖了) 对rsa算法的个人理解 什么是RSA签名、验签、加密解密1、rsa算法为非对称加密...

jason-寒江雪
2015/12/14
716
0
加密解密 加解密出错

怎么在UTF-8和gbk间相互转码 最近在弄一个加密的APP,发现将中文转码为UTF-8进行加密时在输出时就乱码了,还有将解密得来的UTF-8怎么转码为汉字gbk. NSString *encryptText = [NSString stri...

越过山丘宁宁宁宁宁
2016/06/22
94
0
如何盗取价值300万的比特币?!

@蒋欢,美团点评前端工程师,3年工作经验,主要负责美团点评“云店助手"客户端和"美团点评智慧餐厅"小程序的开发。本文首发于 蒋欢的知乎专栏 ,敬请关注。 正文从这开始~ 比特币钱包 Copa...

蒋欢
2018/12/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
5
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
6
0
hive

一、hive的定义: Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后再在Hadoop平台上运行,达到快速开发的目的 Hive中的表是纯逻辑表,就只是表的定义,即表的元数据。本质就是Hadoop的目...

霉男纸
今天
5
0
二、Spring Cloud—Eureka(Greenwich.SR1)

注:本系列文章所用工具及版本如下:开发工具(IDEA 2018.3.5),Spring Boot(2.1.3.RELEASE),Spring Cloud(Greenwich.SR1),Maven(3.6.0),JDK(1.8) Eureka: Eureka是Netflix开发...

倪伟伟
昨天
15
0
eclipse常用插件

amaterasUML https://takezoe.github.io/amateras-update-site/ https://github.com/takezoe/amateras-modeler modelGoon https://www.cnblogs.com/aademeng/articles/6890266.html......

大头鬼_yc
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部