Чтение всех строк в файле с указанием относительного пути в .NET (F #) - PullRequest
0 голосов
/ 28 февраля 2011

Я ищу метод (полагаю, что это статический метод) в библиотеках .NET, чтобы я мог указать относительный путь при чтении файла. Мой код:

let mycontent = Syste..IO.File.ReadAllLines ("C:\...\myfile.txt")

Однако я бы хотел указать относительный путь. Как? Это что-то вроде MapPath Я думаю ...

Ответы [ 3 ]

3 голосов
/ 28 февраля 2011

Вы можете передать относительный путь любой функции, которая принимает путь к файлу, и он будет работать нормально.

3 голосов
/ 28 февраля 2011

Если вам нужны пути относительно каталога, в котором находится ваше приложение (в отличие от текущего рабочего каталога, который может отличаться), вы можете сделать следующее:

module Path =
    let appDir = AppDomain.CurrentDomain.SetupInformation.ApplicationBase
    let makeAppRelative fileName = System.IO.Path.Combine(appDir, fileName)

//Usage
let fullPath = Path.makeAppRelative "myfile.txt"
3 голосов
/ 28 февраля 2011

Относительный путь указывается так:

System.IO.File.ReadAllLines("myfile.txt");

, который будет искать myfile.txt относительно рабочего каталога, в котором выполняется ваше приложение. Работает также с подпапками:

System.IO.File.ReadAllLines(@"sub\myfile.txt");

Функция MapPath, на которую вы ссылаетесь в своем вопросе, используется в приложениях ASP.NET и позволяет вам получить абсолютный путь к файлу по его виртуальному пути. Например:

Server.MapPath("~/foo/myfile.txt")

и если ваш сайт размещен в c:\wwwroot\mysite, он вернет c:\wwwroot\mysite\foo\myfile.txt.

...