Проверьте, существует ли файл или не в C#

Футбольная команда не является списком футболистов. Футбольная команда состоит из списка футболистов!

Это логически неверно:

class FootballTeam : List<FootballPlayer> 
{ 
    public string TeamName; 
    public int RunningTotal 
}

, и это верно:

class FootballTeam 
{ 
    public List<FootballPlayer> players
    public string TeamName; 
    public int RunningTotal 
}
26
задан 25 March 2011 в 21:23
поделиться

12 ответов

Вы можете определить, существует ли указанный файл, используя метод 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.");
        }
    }
}
66
ответ дан splattne 28 November 2019 в 06:05
поделиться

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

System.IO.File.Exists (String)
14
ответ дан bluish 28 November 2019 в 06:05
поделиться
    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> 
      }

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

8
ответ дан Eric Bishard 28 November 2019 в 06:05
поделиться

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

необходимо дать им контроль загрузкой файла - и нет очень, можно сделать с тем управлением. Из соображений безопасности JavaScript не может действительно коснуться его.

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

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

3
ответ дан Keith 28 November 2019 в 06:05
поделиться

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

     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));
            }
        }
4
ответ дан Jmocke 28 November 2019 в 06:05
поделиться

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

System.IO.File.Exists(@"c:\temp\test.txt");
2
ответ дан Ruben 28 November 2019 в 06:05
поделиться

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

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

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

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

2
ответ дан Community 28 November 2019 в 06:05
поделиться

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

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

1
ответ дан ZombieSheep 28 November 2019 в 06:05
поделиться

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

< input type = "file" ...

1
ответ дан Dror 28 November 2019 в 06:05
поделиться

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

1
ответ дан bluish 28 November 2019 в 06:05
поделиться

Это может помочь вам.

try
   {
       con.Open();
       if ((fileUpload1.PostedFile != null) && (fileUpload1.PostedFile.ContentLength > 0))
       {
           filename = System.IO.Path.GetFileName(fileUpload1.PostedFile.FileName);
           ext = System.IO.Path.GetExtension(filename).ToLower();
           string str=@"/Resumes/" + filename;
           saveloc = (Server.MapPath(".") + str);
           string[] exts = { ".doc", ".docx", ".pdf", ".rtf" };
           for (int i = 0; i < exts.Length; i++)
           {
               if (ext == exts[i])
                   fileok = true;
           }
           if (fileok)
           {
               if (File.Exists(saveloc))
                   throw new Exception(Label1.Text="File exists!!!");
               fileUpload1.PostedFile.SaveAs(saveloc);
               cmd = new SqlCommand("insert into candidate values('" + candidatename + "','" + candidatemail + "','" + candidatemobile + "','" + filename + "','" + str + "')", con);
               cmd.ExecuteNonQuery();
               Label1.Text = "Upload Successful!!!";
               Label1.ForeColor = System.Drawing.Color.Blue;
               con.Close();
           }
           else
           {
               Label1.Text = "Upload not successful!!!";
               Label1.ForeColor = System.Drawing.Color.Red;
           }
       }

    }
   catch (Exception ee) { Label1.Text = ee.Message; }
0
ответ дан Deekshit Kumar 28 November 2019 в 06:05
поделиться

Я написал этот код в vb, и он отлично работает, чтобы проверить, существует файл или нет для контроля загрузки файла. попробуйте

ДЛЯ VB CODE ============

    If FileUpload1.HasFile = True Then
        Dim FileExtension As String = System.IO.Path.GetExtension(FileUpload1.FileName)

        If FileExtension.ToLower <> ".jpg" Then
            lblMessage.ForeColor = System.Drawing.Color.Red
            lblMessage.Text = "Please select .jpg image file to upload"
        Else
            Dim FileSize As Integer = FileUpload1.PostedFile.ContentLength

            If FileSize > 1048576 Then
                lblMessage.ForeColor = System.Drawing.Color.Red
                lblMessage.Text = "File size (1MB) exceeded"
            Else
                Dim FileName As String = System.IO.Path.GetFileName(FileUpload1.FileName)

                Dim ServerFileName As String = Server.MapPath("~/Images/Folder1/" + FileName)

                If System.IO.File.Exists(ServerFileName) = False Then
                    FileUpload1.SaveAs(Server.MapPath("~/Images/Folder1/") + FileUpload1.FileName)
                    lblMessage.ForeColor = System.Drawing.Color.Green
                    lblMessage.Text = "File : " + FileUpload1.FileName + " uploaded successfully"
                Else
                    lblMessage.ForeColor = System.Drawing.Color.Red
                    lblMessage.Text = "File : " + FileName.ToString() + " already exsist"
                End If
            End If
        End If
    Else
        lblMessage.ForeColor = System.Drawing.Color.Red
        lblMessage.Text = "Please select a file to upload"
    End If

ДЛЯ C # CODE =============== =======

if (FileUpload1.HasFile == true) {
    string FileExtension = System.IO.Path.GetExtension(FileUpload1.FileName);

    if (FileExtension.ToLower != ".jpg") {
        lblMessage.ForeColor = System.Drawing.Color.Red;
        lblMessage.Text = "Please select .jpg image file to upload";
    } else {
        int FileSize = FileUpload1.PostedFile.ContentLength;

        if (FileSize > 1048576) {
            lblMessage.ForeColor = System.Drawing.Color.Red;
            lblMessage.Text = "File size (1MB) exceeded";
        } else {
            string FileName = System.IO.Path.GetFileName(FileUpload1.FileName);

            string ServerFileName = Server.MapPath("~/Images/Folder1/" + FileName);

            if (System.IO.File.Exists(ServerFileName) == false) {
                FileUpload1.SaveAs(Server.MapPath("~/Images/Folder1/") + FileUpload1.FileName);
                lblMessage.ForeColor = System.Drawing.Color.Green;
                lblMessage.Text = "File : " + FileUpload1.FileName + " uploaded successfully";
            } else {
                lblMessage.ForeColor = System.Drawing.Color.Red;
                lblMessage.Text = "File : " + FileName.ToString() + " already exsist";
            }
        }
    }
} else {
    lblMessage.ForeColor = System.Drawing.Color.Red;
    lblMessage.Text = "Please select a file to upload";
}
0
ответ дан manishN 28 November 2019 в 06:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: