2017-12-03 23 views
0

안녕하세요!
새로운 '폴더'를 만들고 파일을 업로드 할 수있는 프로그램을 만들고 있습니다.
문제는 폴더 안에 그 폴더를 만들고 싶습니다. 같은 이름의 두 개의 하위 폴더를 만들 수 없습니다.
다음은 내 코드입니다.C# 항목이 목록에없고 null 또는 공백이 아님

while (string.IsNullOrEmpty(folderName) || !foglalt || !string.IsNullOrWhiteSpace(folderName)) 
{ 
    folderName = Console.ReadLine(); 

    if (string.IsNullOrEmpty(folderName) || string.IsNullOrWhiteSpace(folderName)) 
    { 
     Console.WriteLine("Ez a mező nem lehet üres. \nÚj mappa neve:"); 
     //(Can't be null. \nNew foldername:) 
     break; 
    } 

    if (p.FolderList.Contains(folderName)) 
    { 
     foglalt = true; 
     Console.WriteLine(
      "Ez a mappanév egyszer már szerepel ebben a környezetben. Kérlek válassz újat!\nÚj mappa neve:"); 
     //(That name is already taken. \nNew foldername:) 
    } 
    else {foglalt = false;} 
} 


는 동안 상태에서 뭔가 잘못이 있어야합니다 ("foglalt은"부울입니다. 촬영을 의미)하지만, 난 그냥 무엇을 모른다.
해결해 주시겠습니까?

+0

내가 이미 존재하는 이름을 주면, 공백이나 null을 쓸 때 작동하지만, 좋을만한 것을 입력 할 때 계속 다른 이름을 묻습니다. – Skickpause

+0

그래서 당신은 * 그것을 할 것으로 기대합니까? 이 스 니펫 대신 [mcve]를 제공 할 수 있습니까? (이상적인 독자라면 미래의 독자를 위해 모든 변수 이름과 메시지를 영어로 변경하십시오.) –

+0

그래서 사용자가 제공 할 때까지 유효한 폴더 이름을 계속 얻으려고합니까? – lamandy

답변

0
while (true) 
{ 
    folderName = Console.ReadLine(); 

    // if folder name is null or empty or whitespace, ask for a new folder name 
    if (string.IsNullOrEmpty(folderName) || string.IsNullOrWhiteSpace(folderName)) 
    { 
     Console.WriteLine("Ez a mező nem lehet üres. \nÚj mappa neve:"); 
     //(Can't be null. \nNew foldername:) 
    } 
    //if folder name already exists, ask for a new one 
    else if (p.FolderList.Contains(folderName)) 
    { 
     Console.WriteLine("Ez a mappanév egyszer már szerepel ebben a környezetben. Kérlek válassz újat!\nÚj mappa neve:"); 
     //(That name is already taken. \nNew foldername:) 
    } 
    else //Folder Name is valid 
     break; //proceed to do stuff with the folder name 
} 
//Do my stuff with the valid folder name 
+0

Visual Studio에서 "bool에 int 형식을 변환 할 수 없습니다"라고하는 while (1)을 좋아하지 않습니다. – Skickpause

+0

을 true로 변경 한 다음 – lamandy

+0

을 @Skickpause로 바꾸십시오. 위와 같은 검사는 Directory.CreateDirectory를 사용하여보다 강력한 검사를 수행하십시오. 위의 검사가 충분하지 않습니다. 사용자가 폴더에 액세스 할 수있는 권한이 없거나 폴더 이름에 유효하지 않은 문자가 있거나 이름이 너무 길 때 등의 경우가 있습니다. 읽기 이 예제는 [MSDN] (https://msdn.microsoft.com/en-us/library/54a0at6s(v=vs.110).aspx) – lamandy