Czy istnieje sposób na zezwolenie na dostęp do plików, gdy są one używane w Javie?

BufferedWriter bw = new BufferedWriter(new FileWriter(file));
BufferedReader br = new BufferedReader(new FileReader(file));
String data = "";
String line;
while((line = br.readLine()) != null)
{
    data += line;
}
bw.write(data + msg);
br.close();
bw.close();

W przeciwnym razie muszę zrobić coś takiego za każdym razem, gdy chcę dodać pojedynczą linię do pliku tekstowego...

Dzięki!

Aby wyjaśnić: potrzebuję zewnętrznych programów, aby móc uzyskać dostęp do pliku, gdy Java do niego zapisuje. NIE chcę używać powyższego kodu za każdym razem, gdy muszę dodać wiersz do pliku. Chcę otworzyć program do zapisywania plików od samego początku i dołączać, kiedy tylko trzeba (ale jak powiedziałem, muszę zezwolić na dostęp do zewnętrznych programów, więc to nie zadziała!).

0
guywhoneedsahand 12 lipiec 2011, 10:51
1
Co chciałbyś zrobić?
 – 
Thorbjørn Ravn Andersen
12 lipiec 2011, 10:58
„Czy jest jakiś sposób na umożliwienie dostępu do plików, gdy są one używane w Javie?”
 – 
guywhoneedsahand
12 lipiec 2011, 11:00
1
Możesz spróbować użyć Selectora w bibliotece NIO. stackoverflow.com/ pytania/906433/…
 – 
RetroCoder
12 lipiec 2011, 11:02
Południe - patrzę w to, dzięki EDIT: Hmm, wygląda skomplikowanie. Czy naprawdę nie ma prostszych rozwiązań?
 – 
guywhoneedsahand
12 lipiec 2011, 11:07
Południowe FileChannels nie są wybieralnymi kanałami. Selektory nie mogą tego rozwiązać. Opublikowany przez Ciebie link też jest nieistotny.
 – 
user207421
12 lipiec 2011, 12:29

2 odpowiedzi

Najlepsza odpowiedź

Ponieważ jesteś w systemie Windows, nie ma rozwiązania. To Windows blokuje jednoczesny dostęp do pliku, a nie Java.

1
user207421 12 lipiec 2011, 12:31
Ok, szkoda. W każdym razie dzięki.
 – 
guywhoneedsahand
13 lipiec 2011, 02:59

W koncepcji java.nio możesz nie blokować dostępu do plików.

-2
stemm 12 lipiec 2011, 11:18
Rozejrzałem się i wydaje mi się, że to droga. Czy masz jakieś samouczki/fragmenty kodu dla pliku we/wy?
 – 
guywhoneedsahand
12 lipiec 2011, 11:36
Nie, nie jesteś. W Javie nie ma czegoś takiego jak nieblokujący dostęp do plików. @guywhoneedsahand zignoruj ​​to.
 – 
user207421
12 lipiec 2011, 12:30
A nawet gdyby tak było, nie pomogłoby to w blokowaniu. Brak blokowania oznacza, że ​​nie zablokuje wątku, jeśli nie ma natychmiast dostępnych danych, nie omija blokad.
 – 
Peter Lawrey
12 lipiec 2011, 12:55
linuxtopia.org/online_books/programming_books/thinking_in_java/… – w tym artykule wyjaśniono jak zablokować niektóre części pliku, podczas gdy inne części pliku będą nadal dostępne dla innych procesów (innych JVM lub procesów natywnych). Ale, jak zrozumiałem, blokowanie jest zależne od systemu operacyjnego.
 – 
stemm
12 lipiec 2011, 15:51