2016-12-29 4 views
1
using System; 
using System.IO; 
using System.Threading; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Documents; 
using System.Windows.Ink; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Animation; 
using System.Windows.Media.Imaging; 
using System.Windows.Shapes; 

    namespace Lumiplex_Cinemas 
    { 
     public partial class Booking : UserControl, ISwitchable 
     { 
      string movieName; 

      public Booking() 
      { 
        InitializeComponent(); 

        movieName = "Descriptions/miss_peregrines_home_for_peculiar_children.txt"; 
        descriptionTextBox.Text = ReadingDesciptions(movieName); 
      } 

      public string ReadingDesciptions(string movieName) 
      { 

       //Tried both of these, still the same error 
       string description = System.IO.File.ReadAllText(movieName); 
       string description = File.ReadAllText(movieName); 

       return description; 
      } 
     } 
    } 

Я пытаюсь отобразить содержимое текстового файла в текстовое поле, но получаю сообщение об ошибке сказав:WPF C#: Чтение из текстового файла

«Необработанное исключение типа«System .IO.DirectoryNotFoundException 'произошел в mscorlib.dll

Дополнительная информация: Не удалось найти часть пути' C: \ Descriptions \ miss_peregrines_home_for_peculiar_children.txt '. "

Извините, если я не включил все, что вам может понадобиться, я отредактирую сообщение, если это так.

+4

Я предполагаю, что файл на самом деле там, правда? – dasblinkenlight

+0

директория не найдена. Является ли папка «Описания» в вашей папке exe? – SAm

+1

Похоже, что «C: \ Descriptions» не существует ... – Mr47

ответ

1

Установите действие сборки файла в папке «Описания» для содержимого и свойства «Копировать в выходной каталог» для копирования, если более новое и он должен работать:

В выходном каталоге нет папки, если в ней нет файлов.

+0

ДА! Благодарю вас, я несколько часов настраивал его и даже не знал, что вы можете это сделать. спасибо – Jordan

0

ваш путь не существует, потому что вы не избежать ваши \ 'ы

вы хотите либо использовать что-то вроде этого

movieName = @"Descriptions\miss_peregrines_home_for_peculiar_children.txt"; 

используя этот способ вам не нужно, чтобы избежать вашей \

movieName = "Descriptions\\miss_peregrines_home_for_peculiar_children.txt"; 

, но глядя на пути, не существует, если это не в вашей папке приложения, но даже в этом случае вы должны делать это по-другому

var exPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 
//exPath is the path of the exe \ dll that is being run which this is what it looks like from your code example 
var filePath = Path.Combine(exPath,"Descriptions", "miss_peregrines_home_for_peculiar_children.txt"); 

лично мне нравится Path.Combine, потому что вам не придется беспокоиться о том, вылетающих персонажей и он будет строить путь для вас, так что вы можете легко добавлять и манипулировать его

Если папка не в папке исполняемых сборок вы должны полностью определить путь, а затем вы не получите ошибку.

+0

- это «System.IO.Path» или «System.Windows.Shapes.Path»? Потому что ему не нравится просто Path.Combine (говорит, что это двусмысленная ссылка). – Jordan

+0

System.IO.Path - это то, что вам нужно –

+0

извините, у меня это в операторе using в верхней части файла, но вы можете получить его там, если хотите слишком –

Смежные вопросы