65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 .NET 中使用 Java 包

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.52/5 (8投票s)

2013年5月17日

CPOL

2分钟阅读

viewsIcon

26782

本技巧介绍如何使用 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 的一个非常简单的实用程序,但如果您愿意,可以相应地使用它,并在以后发现它更有用。

参考文献

© . All rights reserved.