2016-11-26 2 views
0

내가 그 데이터베이스의 경로는이 데이터베이스를 여는 프로그램이 있습니다C# File.exists 반환 거짓

private static string strDefaultDB2 = @"C:\Users\" + Environment.UserName + @"\OneDrive\TIME FILE\MyName\TimeFile.accdb"; 

나는이 하나를 제외한 미세 액세스 할 수 있었다 시도한 모든 컴퓨터, 그것은 또한 원 드라이브에 액세스 할 수 있지만이 코드를 실행하면 파일 내가이 같은 것입니다 코드에 의해 생성 된 경로를 입력하면 ... 존재하지 않습니다 탐색기에서

C:\Users\UserName\OneDrive\TIME FILE\MyName\TimeFile.accdb 

를,이 데이터베이스를 엽니 다 곧.

if (!System.IO.File.Exists(doesFileExist)) 
      { 

       Polaris.Polaris.log("The Path " + doesFileExist + " Does Not Exist!"); 

       runWindowDB(); 


      } 
:이 한 시스템에서 데이터베이스를 찾을 수없는 이유는 무엇도 관리자로 실행하려고하지만이 실행 코드 아무것도

을 변경하지 않은 ... 잘 모르겠어요

내가 파일 이름 변경을하려고하면 예외가 발생합니다 : "파일을 찾을 수 없습니다 [경로]"

을 그리고 데이터베이스 열려고하면 :

"[경로]를 유효한 경로가 아닙니다"

이 경로에는 모든 PC에 공백이 있고 변경 사항은 사용자 이름. 탐색기가 파일을 열어 경로가 올바른지 확인합니다.

아이디어가 있으십니까?

감사합니다.

+3

정확하게 예외가 있습니까? 사용자의 이름이 바뀌었고 사용자 이름이 자신의 폴더 이름과 같지 않을 수 있습니까? 프로그램을 실행하는 사용자에게 파일을 열 수있는 권한이 있습니까? 어떤 코드가 정확히 던지고 있습니까? 문자열을 패스에 어떻게 생성했는지, 패스를 열지 말고, 게시하고, 정확한 예외를 게시하는 것은 아닙니다 (전체, 전체 메시지, 예외 유형 등). –

+0

파일에 "숨김"속성이있을 수 있습니까? –

+0

경로를 사용해야합니다.경로에 공백이 있다면 – chris579

답변

0

예외가 있으십니까? 이 파일을 읽고 쓸 수 있습니까? 문자열에 공백이 있습니다. 어쨌든 좋은 생각은 아닙니다. 공식 문서 link에서

:

경로가 디렉토리를 설명하는 경우,이 메소드는 false를 돌려

. 후행 파일이 있는지 여부를 결정하기 전에 경로 매개 변수에서 공백이 제거됩니다.

지정한 파일이 있는지 확인하는 동안 오류가 발생하면 Exists 메서드는 false를 반환합니다. 문자 또는 너무 많은 문자, 실패 또는 누락 된 디스크 또는 파일을 읽을 수있는 권한이없는 파일 이름을 전달하는 경우와 같이 예외를 발생시키는 상황 인 에서 발생할 수 있습니다.

+0

공백 ** 경로에있는 **는 1996 년에 도입 된 FAT32 이후로 문제가되지 않습니다. – rene

0

하드 코드 다른 사용자가 알고있는 사용자 이름이 컴퓨터에서 시도하십시오. msdn은 문자열에 잘못된 문자가 있거나 경로가 폴더 인 것으로 확인되면 false를 반환한다고 언급합니다. 이상한 인코딩이 진행 중이거나 바이러스 스캐너가 io를 가로채는 중입니다. 실패한 경우 사용자가 작동하는 다른 상자에 로그온하도록하십시오. 그러면 파일이 인식되면 해당 사용자의 원래 상자에 환경이 있어야합니다.