bssyy78
bssyy78

Reputation: 349

c# : find file with variable part in its name

I have a folder location corresponding to the variable "path". In this folder, I have a lot of files, but only one called "common.build.9897ytyt4541". What I want to do is to read the content of this file, so with the following, it's working :

string text = File.ReadAllText(Path.Combine(path, "common.build.9897ytyt4541.js"));

The problem is, that the part between "build" and "js", change at each source code compilation, and I am getting a new hash, so I would like to replace the previous code, to have something working at each build, whatever the hash is, I thought to regex but this is not working :

string text = File.ReadAllText(Path.Combine(path, @"common.build.*.js"));

Thanks in advance for your help

Upvotes: 0

Views: 1212

Answers (2)

Claudiu Guiman
Claudiu Guiman

Reputation: 877

If you know you'll only find one file you can write something like this (plus error handling):

using System.Linq;
...
var filePath = Directory.GetFiles(path, "common.build.*.js").FirstOrDefault();
string text = File.ReadAllText(filePath);

Upvotes: 2

DavidG
DavidG

Reputation: 119146

No, you need to use the exact filename with using File.ReadAllText. Instead, you need to search for the file, for this you can use Directory.GetFiles, for example:

var matches = Directory.GetFiles(path, "common.build.*.js");

if(matches.Count() == 0)
{
    //File not found
}
else if(matches.Count() > 1)
{
    //Multiple matches found
}
else
{
    string text = File.ReadAllText(matches[0]);
}

Upvotes: 1

Related Questions