2015-09-24 3 views
2

У меня возникает проблема с Go при попытке рассказать о различиях между символическими ссылками и каталогами Windows. У меня есть googled, и все, что я мог найти, было следующим: https://github.com/golang/go/issues/3498#issuecomment-142810957Разница между символическими ссылками и каталогами Windows

К сожалению, закрыт и не работает.

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

С питоном я был в состоянии сделать что-то вроде этого:

def test(dir): 
    try: 
     os.chdir(dir) 
    except Exception as e: 
     if "[Error 2]" in str(e): 
      return False 
     else: 
      return True 

есть ли команда Баш я мог бы использовать для вызова из пути, чтобы обнаружить его?

Я бегу из идей :(

ответ

3

Единственный тест я вижу (и я проверил его с идти 1.5.1 на Windows) находится в os/os_test.go:

fromstat, err = Lstat(from) 
if err != nil { 
    t.Fatalf("lstat %q failed: %v", from, err) 
} 
if fromstat.Mode()&ModeSymlink == 0 { 
    t.Fatalf("symlink %q, %q did not create symlink", to, from) 
} 

Он использует os/#Lstat :

Lstat возвращает FileInfo с описанием имени файла
Если файл является символической ссылкой. , возвращенный FileInfo описывает символическую ссылку. Lstat не пытается следовать ссылке.
Если возникла ошибка, она будет иметь тип *PathError.

Вы также можете получить os.Stat() из той же папки, а затем вызвать os.Samefile() (как in this test):

if !SameFile(tostat, fromstat) { 
    t.Errorf("symlink %q, %q did not create symlink", to, from) 
} 
Смежные вопросы