2013-12-22 2 views
-1

Я пытаюсь использовать вывод («строка») в качестве нового имени файла (файлы уже существуют, просто переименовываются). , например. «A, tampqer, n: .jpg» , но это выглядит так: , например. line = "A \ tampqer \ tn: \ t \ t"Используйте выходную строку (StreamReader) как имя файла (переименовать)

Я получаю сообщение об ошибке: незаконный символ для имени файла.

  int counter = 0; 

     string line; 

     // Read the file and display it line by line. 


     StreamReader file = new StreamReader(@"C:\\german-czech.txt"); 
     while ((line = file.ReadLine()) != null) 
     { 
      //replace /t doesnt work 
      for (int i = 0; i < line.Length; i++) 
      { 
       if (line[i] == '\t') 
       { 
        line.Replace(line[i], ','); 
       } 
      } 

      //Console.WriteLine(string.Format(line, @"\\t").ToString()); 
      Console.WriteLine(line); 
      counter++; 

      if (counter == 100) 
       break; 

     } 
     file.Close(); 

И угадайте, что содержание «линии» все тот же ... может кто-нибудь помочь мне с этой небольшой проблемой? Что еще я пробовал? line.Replace (System.Environment.NewLine, ","); String.Empty ... "\ п" С наилучшими пожеланиями

+0

Если какой-либо из ' A, tampqer, n: .jpg или 'A \ tampqer \ tn: \ t \ t' - это имена файлов, вы должны знать, что двоеточие«: »является незаконным символом для имени файла в Windows. Кроме того, хотя я считаю, что '@" C: \\ german-czech.txt "' будет работать, вы можете использовать либо '@ 'C: \ german-czech.txt" или '" C: \\ german- czech.txt "'. – mrzli

ответ

0

Вам нужно

line = line.Replace(line[i], ','); 

Это не меняет его на месте. Он возвращает строку .

Вам также не нужно попеременно перемещать строку по одному. Replace заменит каждое вхождение в строке. Так вместо того, чтобы ваш:

//replace /t doesnt work 
    for (int i = 0; i < line.Length; i++) 
    { 
     if (line[i] == '\t') 
     { 
      line.Replace(line[i], ','); 
     } 
    } 

Просто:

line = line.Replace("\t", ','); 

(.. Это исправление кода Но я думаю, что mrzli в своем комментарии получил реальную ошибку)

+0

«Формат данного пути не поддерживается». для этого утверждения «File.Move (f.FullName, Path.Combine (f.DirectoryName, line.ToString() + f.Extension)); - но только если я использую «line.toString()» с другими именами, он работает. «Строка» теперь выглядит как «A, ampqer, n: ,,» ... – user3128022

+0

ОК, вы оба были правы. Я тоже заменил «:». Большое спасибо :) – user3128022

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