How to open hidden file using C#?

To open a hidden file in C#, you need to first make it visible by removing the hidden attribute, then read its contents, and optionally restore the hidden attribute afterward. Hidden files have the FileAttributes.Hidden attribute set, which prevents them from being displayed in normal file explorers.

Syntax

Following is the syntax for removing the hidden attribute from a file −

FileInfo file = new FileInfo(filePath);
file.Attributes &= ~FileAttributes.Hidden;

Following is the syntax for restoring the hidden attribute −

file.Attributes |= FileAttributes.Hidden;

Using FileInfo to Remove Hidden Attribute

The first step is to create a FileInfo object and remove the hidden attribute using the bitwise AND operator with complement −

Example

using System;
using System.IO;

class Program {
   static void Main() {
      string filePath = "hiddenFile.txt";
      
      // Create a hidden file for demonstration
      File.WriteAllText(filePath, "This is content of a hidden file.\nLine 2 of the file.\nLine 3 of the file.");
      FileInfo file = new FileInfo(filePath);
      file.Attributes |= FileAttributes.Hidden;
      
      Console.WriteLine("File attributes before: " + file.Attributes);
      
      // Remove hidden attribute
      file.Attributes &= ~FileAttributes.Hidden;
      Console.WriteLine("File attributes after removing hidden: " + file.Attributes);
      
      // Now the file can be accessed normally
      Console.WriteLine("File is now accessible for reading.");
   }
}

The output of the above code is −

File attributes before: Hidden, Archive
File attributes after removing hidden: Archive
File is now accessible for reading.

Reading Hidden File Content

Once the hidden attribute is removed, you can read the file content using standard file reading methods like StreamReader

Example

using System;
using System.IO;

class Program {
   static void Main() {
      string filePath = "hiddenFile.txt";
      
      // Create a hidden file with content
      File.WriteAllText(filePath, "This is content of a hidden file.\nSecond line of content.\nThird line of content.");
      FileInfo file = new FileInfo(filePath);
      file.Attributes |= FileAttributes.Hidden;
      
      Console.WriteLine("Reading hidden file content:");
      
      // Remove hidden attribute temporarily
      file.Attributes &= ~FileAttributes.Hidden;
      
      // Read the file content
      using (StreamReader sr = new StreamReader(filePath)) {
         string line;
         while ((line = sr.ReadLine()) != null) {
            Console.WriteLine(line);
         }
      }
      
      // Restore hidden attribute
      file.Attributes |= FileAttributes.Hidden;
      Console.WriteLine("File hidden attribute restored.");
   }
}

The output of the above code is −

Reading hidden file content:
This is content of a hidden file.
Second line of content.
Third line of content.
File hidden attribute restored.

Complete File Operations with Hidden Files

This example demonstrates the complete process of working with hidden files including checking attributes, reading, and writing −

Example

using System;
using System.IO;

class HiddenFileManager {
   public static void ProcessHiddenFile(string filePath) {
      FileInfo file = new FileInfo(filePath);
      
      // Check if file exists and is hidden
      if (file.Exists && (file.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden) {
         Console.WriteLine("File is hidden. Making it visible...");
         
         // Remove hidden attribute
         file.Attributes &= ~FileAttributes.Hidden;
         
         // Read and display content
         Console.WriteLine("File content:");
         string content = File.ReadAllText(filePath);
         Console.WriteLine(content);
         
         // Restore hidden attribute
         file.Attributes |= FileAttributes.Hidden;
         Console.WriteLine("File hidden again.");
      } else {
         Console.WriteLine("File not found or not hidden.");
      }
   }
   
   static void Main() {
      string filePath = "secretFile.txt";
      
      // Create and hide a file
      File.WriteAllText(filePath, "Secret information\nConfidential data");
      FileInfo file = new FileInfo(filePath);
      file.Attributes |= FileAttributes.Hidden;
      
      // Process the hidden file
      ProcessHiddenFile(filePath);
   }
}

The output of the above code is −

File is hidden. Making it visible...
File content:
Secret information
Confidential data
File hidden again.

Key Points

  • Use bitwise AND with complement (&= ~) to remove the hidden attribute.

  • Use bitwise OR (|=) to set the hidden attribute.

  • Always check if the file exists before attempting to modify its attributes.

  • The FileInfo.Attributes property can hold multiple attributes simultaneously.

Conclusion

Opening hidden files in C# requires temporarily removing the FileAttributes.Hidden attribute using bitwise operations. Once the attribute is removed, the file can be accessed like any normal file, and the hidden attribute can be restored afterward if needed.

Updated on: 2026-03-17T07:04:35+05:30

779 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements