理解JDIC中的文件类型关联-Java基础-Java-编程开发

二十六、JAVAIO文件类型操作(File类型操作) Java的IO:类和接口存在于java.io包中。-----------------------------------------------------------------------------------------File类(文件/目录)。-------------------------------------------------------------------------... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

原文作者:JackConradson

文章出处:http://java.sun.com/developer/technicalArticles/J2SE/Desktop/jdic_assoc

译者:Hardneedl

联系译者:HardNeedl@126.COM

JDesktopIntegrationComponents(JDIC)站点https://jdic.dev.java.net

文章索引

========

SUN微系统公司赞助了JDesktopIntegrationComponents(JDIC)项目。这个项目可使用JAVA技术来访问某些操作系统特有功能,包括:

.设置文件类型的关联

.把某一WEB浏览器装载到抽象图形工具(AbstractWindowToolkit)的画布上

.把JAVAWEBSTART程序打包成本机安装程序

.支持系统托盘以及托盘上的弹出式菜单

.开启桌面应用程序,更进一步来进行编辑和打印文件。

本文将来讲述上面列出的五种功能之中的第一:文件类型关联。

什么叫做关联?

=============

每种操作系统,无论是微软的WINDOWS,LINUX,SOLARIS操作系统环境还是苹果公司的MacintoshOSX都有几种类型的桌面图形用户界面来表示计算机上可连同程序一起运行的文件。当用户在一个数据文件上点击时候,操作系统是如何知道需要以哪个应用程序来打开这个数据文件的呢?当用户决定在WINDOWS操作系统上更改一个文件的文件名,然而却忽略了附上文件的扩展名,那么WINDOWS为什么会突然地忘记了该使用哪个程序来使用这个文件呢?

很容易回答上面的问题:每种操作系统都维护着一个与文件扩展名相关信息的数据表。每个扩展名关联到一种文件类型,在这样的一个数据表里,每种文件类型类型都有至少一种以上的动作与之相关。这些动作通常是诸如打开,编辑或者打印文件。此外,每种动作都会找到根据与之关联的可执行程序来完成这些功能。在一种文件上发起一个动作时候,操作系统就到那个保存了跟扩展名有关联的信息表里去找出与这种文件对应的默认的应用程序来执行。当操作系统不能在这个信息表里找到默认的程序的时候,将会询问用户选取某个应用程序来执行他们所希望的动作。

在WINDOWSXP上,点选任一文件系统窗口上的菜单项“工具->文件夹选项”菜单就可看到上文提到的信息表。下图就显示了这个信息表上关于.TXT文件对应的编辑程序。选中扩展名TXT后,点击对话框底部的“高级”按钮。请注意列在新弹出的对话框里的三个动作:“打开”,“打印”,“打印到”。在动作列表中点选名为“打开”的那个选项后在点击“编辑”按钮就会出现另一个对话框。这个“打开”动作使用了NOTEPAD.EXE程序来为所有扩展名是.TXT的文件执行“打开”的动作的。假如用户无意中把.TXT的扩展名改成了.txr,那么操作系统就不知道启用哪个程序来为这个扩展名是.txr的文件执行打开动作了,就是因为在信息表里没有关于扩展名为.txr的记录。

JDIC中的关联类

==============

正如那句响亮的话语:“一次编写,到处运行”那样,JAVA平台隐藏了与操作系统特性的相关。这也就使得JAVA应用程序能够访问文件类型信息表。JDIC致力于解决这样的问题。安装上JDIC的库文件,J在AVA平台上开发的程序员就通过使用一些类来做与文件关联相关的任务了。你应该熟悉三个主要的类:AssociationService,Association,Action,这三个主要的类位于org.jdesktop.jdic.filetypes包。请注意:本文仅以org.jdesktop.jdic.filetypes包里的Action类来讲述,不牵扯任何WAT或者JAVA基本类库(JFC)和SWING中的类。

org.jdesktop.jdic.filetypes.Association

程序员借助Association类来创建新的文件类型或者更改现存的文件类型。可使用这个类里的一些方法来编辑文件类型,MIME扩展类型,与文件类型对应的图标以及关联到文件类型的动作。

org.jdesktop.jdic.filetypes.Action

借助Action类来为文件类型指定动作。所谓的动作就入上文中提到的包括“打开”或者“编辑”。为每一个动作指派一个可执行程序的路径来实现功能。必须在文件类型上把Action对象添加到Association对象。

org.jdesktop.jdic.filetypes.AssociationService

AssociationService类用来让程序员在文件类型信息表中添加或删除条目。既可用管理员身份或者一般用户的身份来实现这样的功能。这个类用Association对象在文件类型信息表中作添加或删除的动作。当AssociationService类在文件类型信息表上做添加或编辑操作后,那么对应的文件类型就在信息表里驻留下来了。这种驻留不会因为那个创建或者进行编辑文件类型的JAVA应用程序的结束而改变,直到文件类型信息条目由于外部的某些原因或者是由于AssociationService对象做的工作导致被删除了才会改变。AssociationService对象在文件类型信息表里既能查找特定的文件扩展名,也能查找MIME的类型。如果找到了需要的文件类型了,那么就返回一个代表那种文件类型的Association对象。AssociationService对象可访问文件类型信息表里的条目,因此程序员就能更改一些内容,比如让扩展名doc关联到StarOffice程序而不是微软的Word。

[1] [2]

JDIC库在Windows平台上的集成应用 Java Desktop Integration Components (JDIC) 库旨在提供一个统一的接口,以便在Java桌面应用程序中实现原生操作系统的功能。它通过抽象层为开发者屏蔽了不同操作系统间的差异,使得创建跨平台的桌面应用更为简单。屏幕截图是桌面应用中非常实用的一个功能,它可以帮助用户捕捉当前屏幕上的一部分或全部内容,并进行保存、编辑或分享。JDIC库提供了内置的截图工具,支持直接从桌面捕获特定区域或全屏图像。这个功能可以利用JDIC库中提供的API来实现。 阅读详情

相关推荐

掌握Java编程:附录与资源指南

本文是一篇关于《Java How To Program》第8版附录的导读,涉及多种编程资源和高级主题,如数制系统、Java桌面集成组件(JDIC)和设计模式等。文章详细介绍了如何通过Deitel官方网站获取这些宝贵的资源,并提供了注册和登录网站的步骤。此外,还强调了阅读附录对于Java学习者的重要性,以及如何有效利用这些资源来深化对Java编程的理解。

weixin_35391606的博客 315

JDIC(Jdesktop Integration Components)入门

摘要本文简单介绍了JDIC(JDesktop Integration Components)的用途,以及以实例的形式教你如何使用JDIC调用或者整合本地桌面环境的组件或应用程序。如果你经常访问java.net,或者读过JavaOne的新闻报道,你可能听过Jdesktop Integration Components(JDIC)。这些新的API终于能让Java开发人员做那些我们曾经羡慕本地同胞们

agou专家书院 2468

jdic.jar.zip

jdic目前提供了本机 Web 浏览器(Internet Explorer 或 Mozilla) 支持、系统托盘支持、文件扩展集成、应用程序启动与打印和其他桌面特性。

JDIC 中利用WebBrowser内置浏览器到java application中

JDIC简介: JDesktop Integration Components (JDIC),是一个开源的项目,目的是构建消除本机应用程序和 Java 等价物之间差距的组件。项目组长是个中国人。该项目是为了使用java建立桌面应用程序而建立的JDIC 单一的 Java API 允许应用程序接进本机操作系统特性,同时保持跨平台支持。   它目前提供了本机 Web 浏览器(In

B_H_L的专栏 1万+

pytorch-cifar100学习资料汇总 - 基于PyTorch的CIFAR-100图像分类实践

pytorch-cifar100是一个基于PyTorch实现CIFAR-100数据集图像分类的开源项目。该项目实现了多种经典的深度学习网络模型,如ResNet、DenseNet、VGG等,为开发者提供了在CIFAR-100数据集上进行图像分类实验的代码范例。pytorch-cifar100项目为我们提供了在CIFAR-100数据集上进行图像分类实验的完整代码实现。无论你是想要学习PyTorch的使用,还是研究不同网络模型在CIFAR-100上的表现,这个项目都是一个很好的起点。

helloaiworld的博客 1125

射频总集篇:(不断更新)

射频每一章涉及到的重点理论/设计方法 CHAPTER 1 传输线理论 输入阻抗Zin,负载阻抗ZL,驻波比ρ,反射系数 CHAPTER 2 波导 矩形波导,圆波导,同轴线 CHAPTER 3 微型带状传输线 微带线的参数设计,带状线的参数设计 CHAPTER 4 ...

jieyannn的博客 1922

JDIC

如果程序员在windows平台中自己开发程序使用到JDIC,在自己的项目中导入相关的jar包如jdic.jar.,并将jdic的jdic.dll和tray.dll放到系统jre的bin目录下 具体操作如下: 摘录 相关下载https://jdic.dev.java.net  本文简单介绍了JDIC(JDesktop Integration Components)的用途,以及以实

wangxianhong的专栏 2944

第3讲:单端传输线的时域TDR仿真(基于实战的第一次仿真视角切换)

本文为CST仿真系列教程的第3讲,主要介绍传输线阻抗(TDR)的两种仿真方法:基于S参数的频域计算和基于高斯脉冲的时域计算。文章详细演示了在CST PCB Studio中修改电容参数、设置TDR仿真参数(包括截止时间和采样点数)的操作步骤,并通过对比实验展示TVS寄生电容对阻抗曲线的影响。最后将两种TDR方法的结果进行对比,验证了两种方法的一致性。本教程适合硬件工程师通过时域波形直观分析传输线阻抗特性,是信号完整性分析的重要技能。

一只豌豆象的博客 230

java学习脚印:深入java绘图机制

From: http://blog.youkuaiyun.com/ziyuanxiazai123/article/details/12654595 写在前面     封装性越好的类在使用时,只要清楚接口即可,而不应该让程序员了解其内部结构;    对于平常的绘图来讲,java绘图机制无需了解太多,但是朦胧容易产生错误,绘图操作包括了整个GUI的显示问题,遂花了一些时间来学习、整理下,本文主要

fyfcauc的专栏 809

SerDes系列之 SSC扩频时钟技术

扩频时钟,又称展频(SSC-Spread Spectrum Clocking),当前PCIE、DDR、USB等几乎所有的高速接口都支持SSC的功能。电子工程师在日常的电气测试中经常与之接触,在电磁传导和辐射发射验证过程中,经常需要使用到芯片的SSC功能,它的物理表现形式,就是信号的比特率会在一个很小的范围内浮动,多见于周期性变化的时钟信号。

一只豌豆象的博客 3443

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet

计算机视觉卷积神经网络(CNN)基础:从LeNet到ResNet,在计算机视觉领域,卷积神经网络(Convolutional Neural Network,CNN)已然成为推动众多任务发展的核心力量。从早期简单的图像识别,到如今复杂的目标检测、语义分割、图像生成等任务,CNN 都展现出了卓越的性能。CNN 的发展历程见证了一系列经典模型的诞生,其中 LeNet 作为开山之作,为 CNN 的发展奠定了基础,而 ResNet 则通过创新性的设计,突破了传统神经网络的限制,使得网络能够构建得更深、性能更优。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 14万+

JAVA 画图机制

java学习脚印:深入java绘图机制 写在前面 封装性越好的类在使用时,只要清楚接口即可,而不应该让程序员了解其内部结构; 对于平常的绘图来讲,java绘图机制无需了解太多,但是朦胧容易产生错误,绘图操作包括了整个GUI的显示问题,遂花了一些时间来学习、整理下,本文主要基于[1][2]以及众多资料整理以及自我理解和实践加工而成(如有错误,请纠正我)。这里所讲的很多技术可能已经...

weixin_30522183的博客 460

如何实现Docker镜像导入导出 ?

摘要: Docker镜像迁移与备份可通过两种方式实现:1)镜像操作(save/load)完整保存分层结构和元数据,适用于完整备份;2)容器操作(export/import)仅保存文件系统快照,适合创建轻量模板。关键区别在于前者保留历史记录和分层,后者生成单层镜像。save/load命令示例:docker save -o nginx.tar nginx:latest,export/import示例:docker export -o container.tar abc123 && docker

weixin_39291964的博客 876

使用 rkt 原生运行 Docker 容器镜像:docker:// 拉取、ACI 转换与运行实战

rkt(容器运行时,pod-native 引擎)内置了对 Docker 容器镜像的**原生获取与运行支持**:无需安装 Docker 客户端,即可通过 `docker://` 前缀从 Docker Hub 或任意兼容 registry 拉取镜像并直接运行。本文以仓库文档 [Documentation/running-docker-images.md](https://link.gitcode.co

gitblog_01200的博客 517

prplOS组件流程梳理

本文梳理了prplOS系统中设备信息管理模块(deviceinfo-manager)的工作流程。该模块启动时通过/etc/init.d/deviceinfo-manager调用核心框架amxrt执行,主要功能包括收集设备信息、管理数据模型、初始化子系统等。系统采用ODL文件定义数据模型,通过解析器将配置文件转换为内存中的对象树。流程涉及命令行参数解析、ODL文件加载、后端模块扫描等核心步骤,最终构建出完整的数据模型供上层应用访问。整个架构体现了模块化设计思想,通过动态加载插件实现功能扩展。

四儿家的小祖宗的博客 1276

3篇1章6节:R基础绘图之图形的保存和导出技巧

高质量图形导出是R语言用户在数据分析和科研工作中的重要技能。通过合理控制图形的分辨率、选择合适的颜色管理方案和文件格式,以及掌握批量保存图形的技巧,可以显著提升图形的展示效果和应用范围。这不仅有助于提高研究成果的展示质量,还能在各种专业场合中展现数据分析的精确性和美观性。

MD Code 1482

统计力学三大系综:微正则、正则与巨正则的适用场景与计算实践

统计力学是研究宏观系统微观基础的重要理论框架,其核心在于通过统计平均方法连接微观状态与宏观性质。基本原理涉及系统微观状态的等概率假设,通过配分函数计算热力学量。技术价值体现在能够预测材料热容、相变行为等关键性质,广泛应用于物理、化学和材料科学领域。应用场景包括理想气体模型、相平衡计算和量子多体系统研究。本文聚焦微正则系综、正则系综和巨正则系综的选择标准,解析不同约束条件下能量涨落和粒子数涨落的处理差异,帮助读者掌握系综适用的边界条件与常见计算误区。

weixin_34203832的博客 392

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java jdic_java中调用web浏览器类库之jdic的配置及简单运用 | 学步园

首先下载jdic的包,坛子里就有,推荐http://download.youkuaiyun.com/detail/woyeyouming/5069206将jdic.dll和tray.dll放在C:\windows\System32下面和java的bin文件下面,如C:\Program Files\Java\jre7\bin下将jar包放在project目录下,并导入项目,同时将ieEmbed.exe导入进去...

weixin_42613773的博客 501

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

利用JDIC添加文件类型关联

首先加入jdic.jar,然后把jdic.dll tray.dll WinMsiWrapper.dll.dll放在JDK安装目录的bin 文件夹下, 添加文件类型关联方法如下:public void addFileAssociation(){    AssociationService serv=new AssociationService();  Association lo

lelexy的专栏 1191

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 301

第三篇 第 6 课

前置:第三篇第 1 课(stdx 引入),第二篇第 1 课(std.regex)。环境:仓颉 SDK 1.2.0。本文所有代码与输出均逐行实测。

weixin_41618057的博客 516

信创环境下PageOffice文档控件适配与实践

信创适配做到文档控件这一层,拼的已经不是"有没有国产版本",而是同一个功能在两类终端上是否真的等价。等价的标准很具体:同一次点击能得到同样的结果,同一份公文能得到同样的版式,同一个项目不需要维护两套代码。这背后是三件并不轻松的工作:服务端用一套接口同时支撑两类终端,客户端把两种系统与四种芯片的安装包分发清楚,文档内核层由产品侧跟着 WPS 的版本走。浏览器这一层的压力,则被收进了产品自己的窗口里——升级节奏由产品掌握,不再交给运气。

zi_wu_xian的专栏 327
上一篇: Java中的浮点数分析-Java基础-Java-编程开发
下一篇: Swing是MVC设计的典范-Java基础-Java-编程开发
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值