C# - 添加,编辑和删除文件标签

时间:2016-06-13 12:02:53

标签: c# file tags filesystems fileinfo

我想在文件系统中添加和检索文件的标签。

由于您可以将Stackoverflow问题标记为相关主题,因此您可以在Windows文件系统中标记文件:

sample

以下方法不允许我访问文件的标记,而只访问其他文件属性。

string file = @"C:\Users\me\Desktop\MyFile.doc";

FileInfo oFileInfo = new FileInfo(file);
MessageBox.Show(oFileInfo.FullName);

有关如何使用System.IO的简单API

访问代码的任何想法

1 个答案:

答案 0 :(得分:1)

  

您可以将Stackoverflow问题标记为相关主题   在Windows文件系统中标记文件

这个假设是错误的。您无法为所有文件类型添加标记。见here

  

请注意

     

您无法添加或修改某些类型文件的文件属性。   例如,您可以添加或修改Microsoft的属性   Office文档和搜索,但您无法添加或修改   TXT或RTF文件的属性。

除了提到的类型之外,还有其他类型可以包含自定义标签:

  • mp3文件可以包含各种版本的ID3标签
  • flac和ogg文件可以包含ogg-vorbis标记
  • jpeg文件可以包含exif数据
  • pdf文件可以包含各种信息字段

编辑/添加/删除这些标签应该使用专用库来完成。

This post有一个很好的解释:

  

在Windows资源管理器中,您可以看到相当多的文档属性   许多文件类型。漂亮,统一的界面表明存在   一些统一的物业商店。事实并非如此。资源管理器   Shell为Property Sheet Handlers提供了一个可扩展的接口   从各种文件类型中提取此信息。有一个处理程序   对于JFIF(JPEG)文件,还有OLE文件的处理程序(旧的   Office格式),以及新的Office格式。

post shows OP如何通过public View getView(int position, View convertView, ViewGroup parent) { if(convertView == null){ convertView = inflater.inflate(R.layout.layout_faq_item, parent, false); } FAQObject faq = faqList.get(position); convertView.setTag(faq); convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { FAQObject faq = (FAQObject) view.getTag(); if(faq.isExpanded()) { view.findViewById(R.id.text_faq_answer_title).setVisibility(View.GONE); view.findViewById(R.id.text_faq_answer_content).setVisibility(View.GONE); ((TextView)view.findViewById(R.id.text_faq_question)).setCompoundDrawablesWithIntrinsicBounds(0,0, android.R.drawable.arrow_down_float, 0); faq.setExpanded(false); }else{ ((TextView)view.findViewById(R.id.text_faq_question)).setText(faq.getQuestion()); ((TextView)view.findViewById(R.id.text_faq_answer_content)).setText(faq.getAnswer()); view.findViewById(R.id.text_faq_answer_title).setVisibility(View.VISIBLE); view.findViewById(R.id.text_faq_answer_content).setVisibility(View.VISIBLE); ((TextView)view.findViewById(R.id.text_faq_question)).setCompoundDrawablesWithIntrinsicBounds(0,0, android.R.drawable.arrow_up_float, 0); faq.setExpanded(true); } } }); return convertView; } 成功添加标记。

还建议阅读:Getting and Setting File Tag Meta Information in C#