在VS.NET2005中使用java代码段
以及SOL文件格式的解析
贺星河 2005-11-16
你是一个.net程序员,不熟悉java,突然拿到一段Java代码,你怎么办?你甚至什么java程序都没有写过,现在要把这段java代码用到.net中来,怎么办呢?
方法不外乎这几个:
1、学习java,用C#重写一遍,语法差不多,应该可以搞定
2、使用J#,把java代码导入进来,做相关改动即可
3、将java类库(jar)转化成.net的类库(dll);比如IKVM项目:
相关方法:
http://www.cnblogs.com/xiaotie/archive/2005/10/10/251724.aspx
其实到了VS.NET2005里面,我觉得大家可以试试第二种方法:
如果你有时间,那么第一种方法当然是最好不过的了,不管是对你的知识结构还是java与C#的了解都会加深很多,但是很多时候,因为可能项目紧张,你没时间重写一遍代码;这种时候你可以用第三种办法,但是实际情况你只是需要一段或者几段java代码,第三种方法就行不通了,所以我觉得第二种方法相对来说还是比较灵活的
我这里只一个举例子来说明在VS.NET2005中怎么在C#中使用一段java代码,供大家参考
写过Flash程序的大概都知道后缀为.sol的一种文件格式,这是flash用于在本地存储日志记录的;我们google一下,发现没有用.net写好的项目,但是有java的,http://sourceforge.net/projects/solve/ ;大家可以到 这里 下载相应的java源代码,然后解压来看可以看到这个软件的windows界面如下图:
图一、java版的SolVE界面
现在我们并不需要这个项目的gui,只是需要解析的一些文件格式代码,从solve-v0.2-src文件夹中我们可以看到,真正需要的是datatypes/fileformat/ 下面的几个相关类
图二、java代码的文件结构
我们使用eclipse查看一下相关的类,可以知道还需要/util/目录下的几个类
现在我们用VS2005新建一个C#Application项目和J#组件项目SolFileAccesser,将相关的几个类拷贝到项目下,并把.java的后名改为.jsl,这样vs就可以识别了
如下图
图三、将文件导入VS.NET中
我们要在C# App中调用这个组件,并实现相应的解析功能
这个时候我们需要Add reference ,选择项目SolFileAccesser,并选择添加.net中的组件vjslib,这样就可以使用java中的一些类和方法了,如下图
图四、建立相应的C#程序调用这个组件
具体的怎么调用方法,我这里只将一个,其他都很类似:
比如现在我们要得到从LogInfo.sol文件里面读取到的Object,首先是要用
SolFileAccesser.DataTypes.Object flashObject =
SolFileAccesser.FileFormat.TCSOFileReader.read(filePath);
从SolFileAccesser.DataTypes.Object类的结构可以得知,flashObject.data是一个type为java.util.ArrayList的值这时因为我们已经引用了vjslib组件,就可以直接在C#中使用以下命令
java.util.ArrayList dataList = flashObject.data;
来获取data的值并进行遍历和解析,最后C#中程序的效果如下
图五、C#程序实现的界面
附源代码:FlashSolFile.rar 我的dotnet2.0版本为 2.0.50727,请注意