Java 7新方法probeContentType的C#实现方式

来源:互联网 发布:北斗神拳 崇明 岛 知乎 编辑:程序博客网 时间:2024/05/16 15:11

在Java 7中增加了新的一个方法——probeContentType,其主要作用是可以判断文件的content type。相应代码如下所示:

import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;public class FileContentType {    public static void main(String[] args) {                printContentType("D:/Downloads/java.txt");        printContentType("D:/Downloads/java.ppt");        printContentType("D:/Downloads/java.doc");        printContentType("D:/Downloads/java.avi");    }    private static void printContentType(String pathToFile) {                Path path = Paths.get(pathToFile);        String contentType = null;        try {            contentType = Files.probeContentType(path);        } catch (IOException e) {                  e.printStackTrace();        }        System.out.println("File content type is : " + contentType);    }}

在C#中没有对应的方法,不过要实现同样的功能并不困难。

using System;using System.IO;using Microsoft.Win32; namespace Demo{    class Program    {        static void Main(string[] args)        {            PrintContentType("D:/Downloads/java.txt");            PrintContentType("D:/Downloads/java.ppt");            PrintContentType("D:/Downloads/java.doc");            PrintContentType("D:/Downloads/java.jar");             Console.ReadKey();        }         private static void PrintContentType(string pathToFile)        {            string result = string.Empty;            string ext = Path.GetExtension(pathToFile);            using (RegistryKey registryKey = Registry.ClassesRoot.OpenSubKey(ext))            {                if (registryKey != null)                {                    var value = registryKey.GetValue("Content Type");                    result = value == null ? "null" : value.ToString();                }            }            Console.WriteLine(result);        }    }}

因为相关的content type信息其实都可以从注册表中取得,故而只需要对注册表做一点操作,即可以达到同样的功能。

原文同步发布于我的个人博客


原创粉丝点击