2013-09-15 2 views
0

У меня нет опыта работы с Filestream StreamWriter, поэтому я не уверен, есть ли что-то очевидное, что мне не хватает или не понимаю.Filestream/Streamwriter неправильно присваивает значения

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

public void FileWrite() 
{ 
    FileStream fs = new FileStream("test.txt", FileMode.Append, FileAccess.Write); 

    StreamWriter sw = new StreamWriter(fs); 

    sw.WriteLine("Title = " + title); 
    sw.WriteLine("Name = " + fName); 
    sw.WriteLine("Last name = " + lName); 
    sw.WriteLine("Gender = " + gender); 
    sw.WriteLine("Medicare no = " + medicareNo); 
    sw.WriteLine("Height = " + height); 
    sw.WriteLine("Weight = " + weight); 
    sw.WriteLine("Age = " + age); 
    sw.WriteLine("Daily Recommended calories = " + cal); 
    sw.WriteLine("Ideal Weight = " + idealWeight); 

    sw.Flush(); 
    sw.Close(); 
    fs.Close(); 

    Readfile(); 
} 

Любая помощь была бы очень признательна, поскольку я не работал с Filestream или StreamWriter в прошлом.

EDIT:

public class PatientDetails 
{ 
    public void ValuePass() 
    { 
     FileHandler file = new FileHandler(); 

     file.setTitle(this.title); 
     file.setName(this.fName, this.lName); 
     file.setMedicare(this.medicareNo); 
     file.setGender(this.gender); 
     file.setMeasurements(this.weight, this.height, this.age); 
     file.setCalcs(this.cal, this.idealWeight); 

     Console.WriteLine(this.fName + this.lName); 
    } 
} 

Это как значения передаются внутри другого класса.

И значения получаются из пользовательского ввода:

do 
{ 
    Console.WriteLine("\nPlease enter the Title"); 
    this.title = Console.ReadLine(); 
+0

title является атрибутом класса. Он получает значение, присвоенное другим классом таким образом: public void setTitle (название строки) { this.title = название; } Может ли это быть проблемой? –

+0

обновите вопрос с помощью кода, как вы назначаете значения, и где вы вызываете этот метод. – Damith

+0

Вам не хватает 'using() {}' операторов. Исключения могут привести к утечке ресурсов. –

ответ

0

вы можете сделать, как показано ниже

FileHandler fh = new FileHandler(); 
fh.setTitle("New Title"); // set all the values..... 
fh.FileWrite(); 
0

Ваш код в FileWrite() функции хорошо и правильно. Вы должны сначала проверить, имеют ли атрибуты класса PatientDetail значения или нет. Если да, то file.setTitle() должны быть реализованы следующим образом:

file.setTitle(string text) 
{ 
title = text; //title is the attribute of `FileHanlder` class 
} 

Также просьба звонить по телефону file.FileWrite() в функции ValuePass().

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