2011-09-24 4 views
1

Java 프로그램에서 File 객체 인스턴스를 만들 때 동시에 실행중인 프로그램이 파일에 대한 쓰기 권한을 가질 수 있습니까? 그래서 File 객체가 example.txt에있는 것처럼, File 객체가있는 동안 다른 프로그램이이 example.txt 파일에 쓸 수 있습니까? 이렇게java.io.File 클래스 사용

답변

1

File f = new File("C:\\test.txt"); 

는 파일에 아무것도하지 않는다. 따라서 원하는 경우 다른 스레드 나 프로세스가 파일을 열 수 있습니다.

파일을 나타내는 개체를 만들지 만 파일을 열거 나 그렇지 않으면 만지지는 않습니다.

+0

다른 프로그램이 example.txt에 쓰고있을 때 canRead 메서드가 false를 반환하고 비어있는 경우 true를 반환합니다. – Andrew

+0

@Andrew : 아마도 그렇지 않습니다. 파일 시스템에 따라 다르지만, Linux, Mac 및 Windows (즉, ext * 및 ntfs)는 다른 프로세스가 파일을 쓰기 위해 열려있는 동안 읽기를 막지 않습니다. 정말로 파일 잠금을 원하면'java.nio.channels.FileLock' 클래스를 사용할 필요가있다. –

0

예. File 인스턴스를 갖는 것은 메소드 중 하나를 호출 할 때까지 실제 파일 시스템과 관련이 거의 없습니다. 사실, 심지어 존재하지 않는 경로의 File 인스턴스를 작성할 수 있습니다.

1

예, Java의 File 객체가 파일 시스템 경로를 나타 내기 때문입니다. 실제로는 기본 리소스에 잠금 의미가있는 파일 핸들이 아닙니다. 존재하지 않는 리소스에 File 인스턴스를 만들 수도 있습니다. 당신이 쓴 경우

2

는 의미

File f=new File("example.txt"); 

만 파일 객체를 생성하지만, 해당 파일 오브젝트가 가상 메모리에 path.Also 주어진 (자바에 따라 하드 디스크에 파일을 생성하지) 이미 가상 메모리에로드 된 다른 응용 프로그램이 파일 객체의 참조에 액세스하거나 호출 할 수 있으면 해당 응용 프로그램은 파일 객체에 액세스 할 수 있습니다. 당신이 가진 파일을 만드는 경우
,

f.createNewFile(); 

그런 다음 다른 응용 프로그램은 하드 디스크에있는 다른 파일로 액세스 할 수 있습니다 하드 disk.Then에서 실제 파일이 있습니다. here