JFileChooser를 사용하여 디렉토리를 선택하는 어플리케이션이 있습니다. 이 응용 프로그램에서는 심볼 링크를 처리하려고하지 않으므로 여러 플랫폼에서 실행하고 싶습니다. 따라서 코드는 선택된 파일이 심볼 링크인지 여부를 판별하고 오류 대화 상자를 표시합니다.FileChooser는 GUI 선택과 타이핑 파일명을 비교합니다
다음은 JFileChooser에서 파일을 가져 오는 코드입니다.
윈도우 7에public static boolean isSymbolic(File f)
{
try
{
String absolute = f.getAbsolutePath();
String canonical = f.getCanonicalPath();
return !(absolute.equals(canonical));
}
catch (IOException ioe)
{
return false;
}
}
: 사용자가 마우스를 사용하여 지정된 디렉토리를 선택하면,이 잘 작동
public File getDirectoryChoice(String buttonText, String currentDirectory)
{
File chosenFile = null;
if (fileChooser == null) { fileChooser = new JFileChooser(); }
if (currentDirectory != null)
{ fileChooser.setCurrentDirectory(new File(currentDirectory)); }
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.setApproveButtonText(buttonText);
int returnValue = fileChooser.showOpenDialog(mainFrame);
if (returnValue == JFileChooser.APPROVE_OPTION)
{
chosenFile = fileChooser.getSelectedFile();
}
return chosenFile;
}
여기에 내가 선택한 파일이 심볼릭 링크인지를 결정하는 데 사용하는 코드입니다 . 사용자가 파일 이름 텍스트 상자에 동일한 디렉토리 이름을 입력하면 두 번째 코드 조각은 절대 경로와 표준 경로가 동일하지 않음을 나타냅니다. 사용자가 후행 백 슬래시를 입력했는지 여부는 중요하지 않습니다.
디버거에서 'return'명령문 행을 중지하고 두 문자열의 세부 사항을 보면 절대 경로 문자열의 해시 값이 큰 음수가되고 표준 문자열의 해시 값 그 이유는 모르겠다. 사실 이클립스 (Eclipse) 디버거의 버크인지 궁금하다.
누구나 왜이 차이가 있을지 말해 줄 수 있습니까?
자본 C를 - 당신이 얼마나 많은 경험이 중요하지 않습니다, 당신은 여전히 (분명히)에 의해 잡힐 수 있습니다. – arcy