2010-06-10 21 views
35

Proszę wyjaśnić strumienie bajtów i pliki strumieni znaków. Co dokładnie oznacza to, że dokument programu Microsoft Word jest zorientowany na bajt lub zorientowany na znak?Strumień bajtów i strumień znaków

Dzięki

+7

Daj spokój - zachęć autora do udzielenia lepszych pytań, pozostawiając nie ** dlaczego zdecydowałeś się głosować (osobiście nie widzę silnego powodu). –

+2

Otwórz dokument MS Word w notatniku. Co widzisz? Śmieci jak wtedy, gdy otwierasz 'exe' w notatniku? Będą to dane binarne :) – BalusC

+0

Głosuję w tym poście, ponieważ to, co widzę w poście, to pomylenie strumienia bajtów ze strumieniem postaci. Nie ma sensu wyjaśniać pytania za pomocą notatnika. Downvoter wydaje mi się bardzo arogancki. – Paul

Odpowiedz

46

Strumień jest sposobem sekwencyjnego dostępu do pliku. Strumień bajtowy uzyskuje dostęp do bajtu pliku po bajcie. Strumień bajtów jest odpowiedni dla każdego rodzaju pliku, jednak nie jest odpowiedni dla plików tekstowych. Na przykład, jeśli plik używa kodowania Unicode, a znak jest reprezentowany za pomocą dwóch bajtów, strumień bajtów traktuje je osobno i będziesz musiał wykonać konwersję samodzielnie.

Strumień postaci odczyta plik po znaku. Strumień znaków musi mieć kodowanie pliku, aby działał poprawnie.

Chociaż dokument Microsoft Word zawiera tekst, nie można uzyskać do niego dostępu za pomocą strumienia znaków (nie jest to plik tekstowy). Aby uzyskać do niego dostęp, musisz użyć strumienia bajtów.

+0

Dzięki kgiannakakis, i co z plikiem .txt? – JavaUser

+2

Strumień znaków jest odpowiedni do odczytu pliku .txt. Jak jednak powiedziałem, musisz znać kodowanie pliku tekstowego. – kgiannakakis

+0

Pytam o plik .txt obecny w systemie operacyjnym Windows – JavaUser

3

Czytaj this. Informuje o różnicy między bajtami i znakami (a także mnóstwem innych użytecznych rzeczy).

4

1. Ustawienia zorientowane na kolor są powiązane z typem danych. Można odczytać tylko ten typ łańcucha lub typ znaku, podczas gdy bajt zorientowany nie jest związany z żadnym typem danych, dane dowolnego typu danych mogą być odczytywane (z wyjątkiem łańcucha), tylko trzeba to określić.

2.Character zorientowane odczytuje znak po znaku natomiast zorientowane odczytuje bajt bajt po bajcie

zorientowane 3.Character strumienie użyciu schematu kodowania znaków (Unicode) natomiast zorientowane Nie używaj żadnych schemat kodowania

4 bajty. zorientowane postaci strumieni są znane również jako czytnik i autor strumieni zorientowane bajtów strumienie są znane jako strumień danych wejściowych strumieni transmisji danych oraz strumień wyjściowy danych

10

ByteStreams:

Oracle stronie dokumentacji o byte streams:

Programy używać strumieni bajtowych wykonać wejście i wyjście 8-bitowych bajtów. Wszystkie klasy strumieni bajtowych pochodzą od InputStream i OutputStream.

enter image description here

przypadku użycia:

strumień bajtów powinny być stosowane tylko dla najprymitywniejszej I/O

Kiedy nie stosować:

Nie należy używać strumienia bajtów do odczytywania Strumień znaków

np.Aby odczytać plik tekstowy

znakowe Streams:

Oracle dokumentacji stronie o character streams:

platformy Java przechowuje wartości postaciach używając konwencji Unicode. We/wy strumienia danych automatycznie tłumaczy ten wewnętrzny format na lokalny zestaw znaków i od niego.

Wszystkie klasy strumieni znaków wywodzą się od Reader i Writer.

Strumienie znaków są często "owijkami" dla strumieni bajtów. Strumień postaci wykorzystuje strumień bajtów do wykonywania fizycznych operacji we/wy, podczas gdy strumień znaków obsługuje translację między znakami i bajtami.

Istnieją dwa strumienie "mostu" ogólnego przeznaczenia bajtu do znaku: InputStreamReader i OutputStreamWriter.

Kiedy stosować:

Aby odczytać charakter strumieni albo z Socket lub File znaków

Podsumowując:

strumień Byte czyta i napisać bajt na czas. Musimy unikać korzystania ze strumienia bajtów, gdy mamy do czynienia z bardziej wyrafinowanymi danymi.

Strumień znaków i inne dostępne strumienie powinny być używane do obsługi wyrafinowanych danych.

+0

Pojęcia te są zawsze tajemnicą. [Pytanie] (https://stackoverflow.com/q/46953036/3317808) – overexchange

0

Strumień postaci odczyta plik po znaku. Strumienie znaków są w stanie odczytać znaki 16-bitowe (strumienie bajtów odczytują znaki 8-bitowe). Strumienie znaków są w stanie tłumaczyć niejawnie 8-bitowe dane na 16-bitowe dane lub odwrotnie. Strumień znaków może obsługiwać wszystkie rodzaje zestawów znaków ASCII, Unicode, UTF-8, UTF-16 itp. Jednak strumień bajtów jest odpowiedni tylko dla zestawu znaków ASCII. Platforma Java przechowuje wartości znaków przy użyciu konwencji Unicode. We/wy strumienia danych automatycznie tłumaczy ten wewnętrzny format na lokalny zestaw znaków i od niego.

Jeśli nie używasz danych binarnych, takich jak obrazy i pliki dźwiękowe, powinieneś używać czytników i pisarzy do odczytywania i zapisywania informacji za pomocą strumieni znaków.