부모님을 위해 디지털 포토 카메라에서 '내 문서'폴더로 파일을 복사하는 간단한 프로그램을 작성 중입니다. 그들은 항상 자신의 사진을 카메라에서 가져 오기 위해 내 도움이 필요합니다. (그렇게 기술적으로 진보하지 않습니다.) 그래서 도움을 주기로했습니다. 복사기라고 불렀습니다. 나는 자바에 적합한 USB 수신기를 찾을 수 없습니다 때문에, 나는 하나에게 자신을 썼다 :자바 스크립트가 SystemTray에 숨어있을 때 멈추다
private void sync()
{
// All devices in an ArrayList
File[] roots = File.listRoots();
ArrayList<File> newList = new ArrayList<File>();
for(File f : roots)
{
newList.add(f);
}
// Delete unavailable devices
ArrayList<File> removeThese = new ArrayList<File>();
for(File f : devices)
{
if(!newList.contains(f))
{
removeThese.add(f);
}
}
devices.removeAll(removeThese);
// Add unknown devices
for(File f : newList)
{
if(!devices.contains(f) && f.canRead() && f.canWrite())
{
alarm(f); // Called when new device inserted
devices.add(f);
}
}
}
이 방법은 별도의 스레드에서 모든 1000MS라고하고 나는 할 것 같아요. 인정합니다. 이것은 더러운 방법이지만 작동합니다. 나는이 기능을 자주 테스트했고 나는 항상 원하는 결과를 얻었다. 내 programm을 계속 만들었을 때 프로그램을 SystemTray에 숨길 때 스레드가 새 장치를 감지하지 못하는 것으로 나타났습니다. 다시 열면 검색 스레드가 여전히 작동하지 않습니다. 아무도이 문제의 원인과 해결 방법을 말할 수 있습니까?
을 1000ms마다 호출하는 대신,이를 호출하는 .bat 파일을 작성하고 데스크톱에 배치하십시오. 나는 그들이 기술이별로 없다고해도 "DOUBLE-CLICK"을 할 수 있다고 믿는다;) – alfasin
컴퓨터 드라이버를 작성하고 부모님 께 설치하는 것이 덜 어려울 것 같습니다. : D – Wug
폴링 스레드가 시작되는 지점에서 어떤 일이 발생하는지 살펴보십시오. 어떻게 든 중단됩니까? – Wolfgang