Hallo
Ich habe ein Problem, ich habe vor einiger Zeit diese klasse programmiert und es funktionierte alles super.
Diese Klasse sollte nur 2 Files kruze Zeit schreibgeschützt machen um die Manipulation durch andere Programme zu verhindern während geschrieben wird.
Seit ich jedoch mein Runtime Environmeht von JRE 1.4.19 auf JRE 1.6 upgedatet hatte bekomme ich immer eien (java.nio.channels.ClosedChannelException)
Ich weiß dass diese ClosedChannelException bei der FileLock.release() Methode auftritt, kann mir aber nicht erklären wo das Problem liegt da ja nur ein JRE Update erfolgt ist und diese doch abwärtskompatibel sein müsste!
Danke an alle die mir weiterhelfen können oder es versuchen:toll::toll::toll::applaus:
Ich habe ein Problem, ich habe vor einiger Zeit diese klasse programmiert und es funktionierte alles super.
Diese Klasse sollte nur 2 Files kruze Zeit schreibgeschützt machen um die Manipulation durch andere Programme zu verhindern während geschrieben wird.
Seit ich jedoch mein Runtime Environmeht von JRE 1.4.19 auf JRE 1.6 upgedatet hatte bekomme ich immer eien (java.nio.channels.ClosedChannelException)
Ich weiß dass diese ClosedChannelException bei der FileLock.release() Methode auftritt, kann mir aber nicht erklären wo das Problem liegt da ja nur ein JRE Update erfolgt ist und diese doch abwärtskompatibel sein müsste!
Danke an alle die mir weiterhelfen können oder es versuchen:toll::toll::toll::applaus:
Java:
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
public class DirectoryLock {
public static final String LOCK_FILE_NAME = "directoryfile.lock";
private static FileLock m_file1Lock;
private static FileOutputStream m_file1Stream;
private static FileLock m_file2Lock;
private static FileOutputStream m_file2Stream;
public static void getFile1DirectoryLock(File dir) throws IOException {
m_file1Stream = new FileOutputStream(new File(dir.getPath() + File.separator + DirectoryLock.LOCK_FILE_NAME));
FileChannel channel = m_file1Stream.getChannel();
m_file1Lock = channel.tryLock(0, Long.MAX_VALUE, false);
return m_file1Lock;
}
public static void getFile2DirectoryLock(File dir) throws IOException {
m_file2Stream = new FileOutputStream(new File(dir.getPath() + File.separator + DirectoryLock.LOCK_FILE_NAME));
FileChannel channel = m_file2Stream.getChannel();
m_file2Lock = channel.tryLock(0, Long.MAX_VALUE, false);
return m_file2Lock;
}
public static void releaseFile1DirectoryLock() throws IOException {
if (m_file1Lock != null) {
if (m_file1Stream != null) {
m_file1Stream.close();
m_file1Stream = null;
} // if
m_file1Lock.release();
m_file1Lock = null;
} // if
}
public static void releaseFile2DirectoryLock() throws IOException {
if (m_file2Lock != null) {
if (m_file2Stream != null) {
m_file2Stream.close();
m_file2Stream = null;
} // if
m_file2Lock.release();
m_file2Lock = null;
} // if
}
}