Използване на file.Close() със StreamWriter

Имам проблеми при опит да използвам файла. Затворете със StreamWriter в този метод, изглежда не го харесва. Може ли някой да демонстрира как може да се направи това. (Причината за това е, че друг метод има достъп до използван файл и следователно не може, тъй като файлът все още се използва от другия метод.)

Код досега:

private static void TrimColon()
{
    using (StreamWriter sw = File.AppendText(@"process_trimmed.lst"))
    {
        StreamReader sr = new StreamReader(@"process_trim.lst");
        string myString = "";
        while (!sr.EndOfStream)
        {

            myString = sr.ReadLine();
            int index = myString.LastIndexOf(":");
            if (index > 0)
                myString = myString.Substring(0, index);

            sw.WriteLine(myString);
        }
    }
}

person Ben    schedule 18.06.2011    source източник
comment
Трябва също да затворите StreamReader.   -  person Ivan Danilov    schedule 18.06.2011
comment
Хм, къде е? Забравихте да обвиете StreamReader с оператора using. Файлът остава отворен.   -  person Hans Passant    schedule 18.06.2011
comment
@Hans Passant Бихте ли демонстрирали, моля?   -  person Ben    schedule 18.06.2011


Отговори (2)


StreamWriter е затворен, както и променен поради израза "using". Така че няма нужда да се обаждате наблизо.

person Hasan Fahim    schedule 18.06.2011
comment
Объркан съм, Иван Данилов твърди, че не е затворен, а Ханс Пасант изглежда също мисли така - person Ben; 18.06.2011
comment
@Бен. Вашият StreamWriter е затворен и променен, тъй като е в израз за използване. Но StreamReader не е затворен. Затова поставете и това в израз за използване. - person Hasan Fahim; 18.06.2011

person    schedule
comment
@myermian Така че бих извикал TrimColon като: TrimColon(input.txt,output.txt) ?? - person Ben; 18.06.2011
comment
Е, във вашия случай, TrimColon(@"process_trim.lst", @"process_trimmed.lst"); - person myermian; 18.06.2011
comment
@myermian По някаква причина кодът по-горе не създава автоматично process_trimmed.lst, той трябва да съществува :S - person Ben; 18.06.2011
comment

Опитвам се да изпратя имейл с помощта на java mail api. Но изключение е съобщението по-горе.

Неуспешно свързване към SMTP хост: {remote-server}, порт: {port}, отговор: -1

Какво означава "отговор: -1"

Не мога да намеря този код в ръководството за API.

- person myermian; 18.06.2011
comment
@myermian Да, файлът не съществува, следователно хвърля изключение - person Ben; 18.06.2011
comment
@Ben: Вземам го обратно, File.AppendText не изисква файлът да съществува. Сигурен ли си, че съществува друг твой файл? - person myermian; 18.06.2011
comment
@myermian Лошото ми, някои правописни грешки в кода, също така имате някои правописни грешки за: if (String.IsNullOrWhitespace(inputFilePath) трябва да бъде if (String.IsNullOrWhiteSpace(inputFilePath)) и if (String.IsNullOrWhitespace(outputFilePath) трябва да бъде: if ( String.IsNullOrWhiteSpace(outputFilePath)) Благодаря за помощта ви :D! - person Ben; 18.06.2011
comment
Също така го промених на File.OpenText, за да стане по-ясно какво е намерението. - person myermian; 18.06.2011