Убедитесь, что файл существует или нет в C # - PullRequest
25 голосов
/ 06 января 2009

Я работаю над приложением. Это приложение должно получать резюме от пользователей, поэтому мне нужен код, чтобы проверить, существует файл или нет.

Я использую ASP.NET / C #.

Ответы [ 12 ]

66 голосов
/ 06 января 2009

Вы можете определить, существует ли указанный файл, используя метод Exists класса File в пространстве имен System.IO:

bool System.IO.File.Exists(string path)

Документацию можно найти здесь, на MSDN .

Пример:

using System;
using System.IO;

class Test
{
    public static void Main()
    {
        string resumeFile = @"c:\ResumesArchive\923823.txt";
        string newFile = @"c:\ResumesImport\newResume.txt";
        if (File.Exists(resumeFile))
        {
            File.Copy(resumeFile, newFile);
        }
        else
        {
            Console.WriteLine("Resume file does not exist.");
        }
    }
}
14 голосов
/ 06 января 2009

Чтобы проверить, существует ли файл в .NET, вы можете использовать

System.IO.File.Exists (String)
7 голосов
/ 28 ноября 2013
    if (File.Exists(Server.MapPath("~/Images/associates/" + Html.DisplayFor(modelItem => item.AssociateImage)))) 
      { 
        <img src="~/Images/associates/@Html.DisplayFor(modelItem => item.AssociateImage)"> 
      }
        else 
      { 
        <h5>No image available</h5> 
      }

Я сделал что-то подобное, чтобы проверить, существует ли изображение перед его отображением.

3 голосов
/ 04 марта 2016

Попробуйте это:

     string fileName = "6d294041-34d1-4c66-a04c-261a6d9aee17.jpeg";

     string deletePath= "/images/uploads/";

     if (!string.IsNullOrEmpty(fileName ))
        {
            // Append the name of the file to previous image.
            deletePath += fileName ;

            if (File.Exists(HttpContext.Current.Server.MapPath(deletePath)))
            {
                // deletevprevious image
                File.Delete(HttpContext.Current.Server.MapPath(deletePath));
            }
        }
3 голосов
/ 06 января 2009

Простой ответ заключается в том, что вы не можете - вы не сможете проверить файл на их компьютере с веб-сайта ASP, так как это может быть опасным для них.

Вы должны предоставить им элемент управления загрузкой файлов - и вы мало что можете сделать с этим элементом управления. По соображениям безопасности javascript не может его по-настоящему трогать.

<asp:FileUpload ID="FileUpload1" runat="server" />

Затем они выбирают файл для загрузки, и вам приходится иметь дело с любым пустым файлом, который они могут отправить на сервер.

2 голосов
/ 06 января 2009

Пока не могу комментировать, но я просто хотел не согласиться / уточнить с erikkallen .

Вы не должны просто поймать исключение в описанной вами ситуации. Если вы ЗНАЕТЕ, что файл должен быть там, и из-за какого-то исключительного случая это не так, тогда было бы приемлемо просто попытаться получить доступ к файлу и перехватить любое возникшее исключение.

Однако в этом случае вы получаете ввод от пользователя и у вас мало причин полагать, что файл существует. Здесь вы всегда должны использовать File.Exists ().

Я знаю, что это клише, но вы должны использовать Исключения только для исключительного события, а не как часть обычного потока вашего приложения. Это дорого и затрудняет чтение и отслеживание кода.

2 голосов
/ 06 января 2009

Вы можете использовать:

System.IO.File.Exists(@"c:\temp\test.txt");
1 голос
/ 06 января 2009

Вы написали asp.net - вы хотите загрузить файл?
если это так, вы можете использовать HTML

1 голос
/ 06 января 2009

Все эти ответы предполагают, что проверяемый файл находится на стороне сервера. К сожалению, нет чугунного способа гарантировать, что файл существует на стороне клиента (например, если вы загружаете резюме). Конечно, вы можете сделать это в Javascript, но вы все еще не уверены на 100% на стороне сервера.

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

1 голос
/ 06 января 2009

В дополнение к использованию File.Exists(), вам может быть лучше просто попытаться использовать файл и перехватить любое выброшенное исключение. Файл может не открыться из-за других вещей, кроме несуществующих.

...