如何在 .NET 中使用 Java 包






4.52/5 (8投票s)
本技巧介绍如何使用 IKVM.NET 在 .NET 中使用 Java 包。
引言
在本技巧中,我将描述如何使用 IKVM.NET 在 .NET 中使用 Java 包。 在我之前的技巧中,我简要介绍了 IKVM.NET 的所有内容。 因此,在阅读本技巧之前,您可以参考 这篇文章。 IKVM.NET 通过 OpenJDK 项目提供此功能。
Using the Code
因此,要使用 IKVM.NET 库,首先需要从 这里 下载它。 下载 IKVM.NET 后,解压缩文件。 您可以在解压缩的文件中看到以下文件夹和文件。
现在,假设您正在 C#.NET 中创建一个项目,并且希望在此项目中使用的 Java 包,那么我们需要添加所需包的引用。 对于每个包,都有一个单独的 DLL 文件,因此您可以添加任何包。
如上图所示,存在许多以 DLL 文件形式存在的包,因此您可以添加所需包的引用。
在这里,我将使用 Java 的 Java.util.zip 包中存在的 GZIP 压缩类。 我知道大家现在都有一个问题,为什么我要使用 Java 的 GZIP 压缩,而 .NET 中已经存在。 原因是 Java 提供的 GZIP 压缩比 .NET 更好。
让我们看看如何使用它。 因此,我们需要添加 IKVM.OpenJDK.Util.dll 和 IKVM.OpenJDK.Code.dll,因为 GZIPOutputStream
类存在于 IKVM.OpenJDK.Util
包中,而 FileInputStream
类,用于文件操作,存在于 Java.io
中,该类位于 IKVM.OpenJDK.Code
包中。
using java.io;
using java.util.zip;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
string srcfile="c:\\source.txt";
string dstfile="c:\\destination.txt";
FileInputStream fin = new FileInputStream(srcfile);
GZIPOutputStream fout = new GZIPOutputStream(new FileOutputStream(dstfile));
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fin.read(buffer)) != -1) //srcfile.getBytes()
{
System.Console.WriteLine(bytesRead);
fout.write(buffer, 0, bytesRead);
}
fin.close();
fout.close();
//CompressStringToFile(dstfile, srcfile);
}
}
}
如上代码所示,通过使用 IKVM.NET,我们可以非常轻松地使用任何 Java 包,而无需任何开销。 您可以使用在 Java 中使用的相同代码。
关注点
您可以使用 Java 包提供的许多强大功能,而无需任何开销。 在本技巧中,我使用 Java 的一个非常简单的实用程序,但如果您愿意,可以相应地使用它,并在以后发现它更有用。