文件资源管理器如何打开文件?
How does File Explorer open files?
这可能是个愚蠢的问题,但是当我双击应用程序或 .exe 应用程序一词时,幕后会发生什么?
对于'Non-Developer',它只是在双击后在正确的环境中打开文件。但我想知道,它是怎么做到的,文件管理器怎么知道要打开什么? (word 中的 .docx,texteditor 中的 .txt 等...)
+ 我想知道如何在 Node.js 中做到这一点,这是使用 child_process 和每个后缀的 if 语句的最佳方式吗?
对于 Node.js,您可以使用 child_process 到 shell 到 the start
command,其功能与文件资源管理器类似。
例如start some/path/to/file.docx
将在与格式关联的默认程序中打开该文件。
有一个文件关联告诉Windows如何处理某个文件扩展名。您可以在 Windows 命令提示符中键入 assoc
来查看它们。例如:
C:\test>assoc .txt
.txt=txtfile
所以 Windows 现在知道,扩展名为 .txt
的文件是 txtfile
.
ftype
定义如何处理该文件类型:
C:\test>ftype txtfile
txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1
因此,每当您双击文件时,Windows 都会检查它是否与任何文件类型相关联。然后它查找如何处理该文件类型并执行该命令(在上面的示例中,它使用文件名作为参数打开记事本)。
assoc
和 ftype
都可以更改设置(例如用另一个编辑器打开 .txt
文件)。但如果您尝试这样做,请帮自己一个忙并记下原始设置,以便您能够在需要时恢复更改。
也可以直接在注册表中进行更改(不推荐,当您没有处理注册表的经验时)
这可能是个愚蠢的问题,但是当我双击应用程序或 .exe 应用程序一词时,幕后会发生什么?
对于'Non-Developer',它只是在双击后在正确的环境中打开文件。但我想知道,它是怎么做到的,文件管理器怎么知道要打开什么? (word 中的 .docx,texteditor 中的 .txt 等...)
+ 我想知道如何在 Node.js 中做到这一点,这是使用 child_process 和每个后缀的 if 语句的最佳方式吗?
对于 Node.js,您可以使用 child_process 到 shell 到 the start
command,其功能与文件资源管理器类似。
例如start some/path/to/file.docx
将在与格式关联的默认程序中打开该文件。
有一个文件关联告诉Windows如何处理某个文件扩展名。您可以在 Windows 命令提示符中键入 assoc
来查看它们。例如:
C:\test>assoc .txt
.txt=txtfile
所以 Windows 现在知道,扩展名为 .txt
的文件是 txtfile
.
ftype
定义如何处理该文件类型:
C:\test>ftype txtfile
txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1
因此,每当您双击文件时,Windows 都会检查它是否与任何文件类型相关联。然后它查找如何处理该文件类型并执行该命令(在上面的示例中,它使用文件名作为参数打开记事本)。
assoc
和 ftype
都可以更改设置(例如用另一个编辑器打开 .txt
文件)。但如果您尝试这样做,请帮自己一个忙并记下原始设置,以便您能够在需要时恢复更改。
也可以直接在注册表中进行更改(不推荐,当您没有处理注册表的经验时)