Chcę zapisać dane do pliku przy różnych przesunięciach. Przykład, w pozycji 0, w (size/2) th position, at (size/4) th position itp. Size reprezentuje rozmiar pliku, który ma zostać utworzony. Czy jest to możliwe bez tworzenia różnych części plików i dołączania do nich?Zapisywanie bajtów danych do pliku z przesunięciem w java
Odpowiedz
Możesz pisać w dowolnym miejscu w pliku, używając RandomAccessFile - po prostu użyj seek
, aby dostać się we właściwe miejsce i zacząć pisać.
Jednak nie wstawi bajtów w tych miejscach - będzie to właśnie nadpisać je (lub dodać dane na końcu jeśli piszesz poza końcem bieżącej długości pliku, oczywiście). Nie jest jasne, czy tego właśnie chcesz, czy nie.
Czego szukasz: Random access files
. Z official sun java tutorial site -
pliki Random Access pozwalają nonsequential lub losowego dostępu do treści danej pliku. Aby uzyskać dostęp do pliku w sposób losowy, należy otworzyć plik, wyszukać konkretną lokalizację i odczytać lub zapisać w tym pliku.
Ta funkcja jest możliwa dzięki interfejsowi SeekableByteChannel. Interfejs SeekableByteChannel rozszerza kanały wejścia/wyjścia z pojęciem aktualnej pozycji. Metody umożliwiają ustawienie lub zapytanie o pozycję , a następnie można odczytać dane z tej lokalizacji lub zapisać je w tej lokalizacji. API składa się z kilku, łatwe w użyciu, metod:
pozycji - zwraca aktualny pozycja kanału
pozycji (długie) - ustawia kanału pozycja
odczytu (ByteBuffer) - Odczytuje bajtów do bufora z kanału
zapisu (ByteBuffer) - Zapisuje bajtów z bufora do kanału
skróconego (długości) - przycina plik (lub inny podmiot) połączony z kanałem
i przykład, który jest dostarczany jest -
String s = "I was here!\n";
byte data[] = s.getBytes();
ByteBuffer out = ByteBuffer.wrap(data);
ByteBuffer copy = ByteBuffer.allocate(12);
try (FileChannel fc = (FileChannel.open(file, READ, WRITE))) {
// Read the first 12
// bytes of the file.
int nread;
do {
nread = fc.read(copy);
} while (nread != -1 && copy.hasRemaining());
// Write "I was here!" at the beginning of the file.
// See how they are moving back to the beginning of the
// file?
fc.position(0);
while (out.hasRemaining())
fc.write(out);
out.rewind();
// Move to the end of the file. Copy the first 12 bytes to
// the end of the file. Then write "I was here!" again.
long length = fc.size();
// Now see here. They are going to the end of the file.
fc.position(length-1);
copy.flip();
while (copy.hasRemaining())
fc.write(copy);
while (out.hasRemaining())
fc.write(out);
} catch (IOException x) {
System.out.println("I/O Exception: " + x);
}
Jeśli nie jest to ogromny plik można odczytać całą rzecz i od edycji tablicy:
public String read(String fileName){
BufferedReader br = new BufferedReader(new FileReader(fileName));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append("\n");
line = br.readLine();
}
String everything = sb.toString();
} finally {
br.close();
}
}
public String edit(String fileContent, Byte b, int offset){
Byte[] bytes = fileContent.getBytes();
bytes[offset] = b;
return new String(bytes);
]
a następnie zapisać go z powrotem do pliku (lub po prostu usunąć starą i pisać tablica bajtów do nowego pliku o tej samej nazwie)
- 1. Zapisywanie zestawu bitów do pliku w java
- 2. Zapisywanie do pliku tymczasowego w java
- 3. Zapisywanie tablicy bajtów do pliku. Nie zawsze uzyskuję oczekiwany wynik
- 4. Java - Zapisywanie ciągów do pliku CSV
- 5. Zapisywanie danych do pliku json z pliku PHP
- 6. Zapisywanie pliku wideo do pliku OpenCV
- 7. Zapisywanie wielowymiarowej tablicy bajtów w bazie danych SQL Server
- 8. Java/Android: odczytywanie/zapisywanie tablicy bajtów przez gniazdo
- 9. C# - Czytanie określonych bajtów pliku
- 10. Java, sposób dzielenia łańcucha znaków z przesunięciem
- 11. Zapisywanie logów do pliku
- 12. Zapisywanie danych do Hadoop
- 13. boost :: asio :: async_write, zapisywanie danych większych niż 65536 bajtów
- 14. Zapisywanie QNetworkReply do pliku
- 15. Zapisywanie obrazu do pliku
- 16. Jak wyodrębnić rozszerzenie pliku z tablicy bajtów
- 17. Zapisywanie pliku z nazwą urządzenia
- 18. Zapisywanie danych z LogCat w Androidzie
- 19. Zapisywanie do pliku z wieloprocesowym przetwarzaniem
- 20. Zapisywanie odpowiedzi z żądań do pliku
- 21. Zapisywanie ramki danych jako pliku binarnego
- 22. Zapisywanie szybkiego słownika do pliku
- 23. Zapisywanie do pliku w HDFS w Hadoop
- 24. Zapisywanie dowolnego pliku do bazy danych, po prostu przekonwertować go do tablicy bajtowej?
- 25. Zapisywanie grid.arrange() działki do pliku
- 26. Najlepszy sposób na zapisywanie danych w aplikacji Java?
- 27. Równoczesne odczytywanie/zapisywanie do zmiennej w java
- 28. PowerShell: zapisywanie do pliku tekstowego
- 29. Java: Zapisywanie/odczytywanie mapy z dysku
- 30. Zapisywanie dziennika Androida do pliku
Przejdź [tutaj] (http://docs.oracle.com/javase/tutorial/essential/io/rafs.html). –