用C#实现Java 7新方法probeContentType2014-10-01 申江渔夫 在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信息其实都可以从注册表中取得,故而只需要对注册表做一点操作,即可以达到同样的功能。