2010-06-10 38 views
35

Vui lòng giải thích luồng byte và tệp luồng ký tự. Những gì chính xác những phương tiện này, là tài liệu từ microsoft là định hướng byte hoặc nhân vật theo định hướng?luồng byte và luồng ký tự

Cảm ơn

+7

downvoter thân yêu - vui lòng khuyến khích tác giả đưa ra câu hỏi hay hơn bằng cách để lại một lý do không chính đáng) –

+2

Mở tài liệu MS Word trong notepad. Bạn thấy gì? Rác như khi bạn mở một 'exe' trong notepad? Sau đó nó sẽ là dữ liệu nhị phân :) – BalusC

+0

Tôi bỏ phiếu bài đăng này bởi vì những gì tôi thấy từ bài đăng là sự nhầm lẫn giữa luồng byte và luồng ký tự. Nó không có ý nghĩa để giải thích câu hỏi bằng notepad. Các downvoter dường như với tôi rất kiêu ngạo. – Paul

Trả lời

46

Luồng là cách truy cập tệp tuần tự. Một luồng byte truy cập byte tệp theo byte. Một luồng byte phù hợp với bất kỳ loại tệp nào, tuy nhiên không hoàn toàn phù hợp với các tệp văn bản. Ví dụ: nếu tệp đang sử dụng mã hóa unicode và ký tự được biểu diễn bằng hai byte, luồng byte sẽ xử lý riêng các tệp này và bạn sẽ cần tự thực hiện chuyển đổi.

Luồng ký tự sẽ đọc ký tự tệp theo ký tự. Luồng ký tự cần được cung cấp mã hóa của tệp để hoạt động chính xác.

Mặc dù Tài liệu Microsoft Word chứa văn bản nhưng không thể truy cập được bằng luồng ký tự (nó không phải là tệp văn bản). Bạn cần sử dụng một luồng byte để truy cập nó.

+0

Cảm ơn kgiannakakis, và Còn tệp .txt thì sao? – JavaUser

+2

Luồng ký tự thích hợp để đọc tệp .txt. Tuy nhiên, như tôi đã nói, bạn cần biết mã hóa của tệp văn bản. – kgiannakakis

+0

Tôi đang hỏi về tệp .txt có trong một hệ điều hành windows – JavaUser

3

Đọc this. Nó cho bạn biết về sự khác biệt giữa byte và ký tự (cũng như tải các nội dung hữu ích khác)

4

1.Chiến trình định hướng được gắn với kiểu dữ liệu. Chỉ có kiểu chuỗi hoặc kiểu ký tự có thể được đọc qua nó trong khi định hướng byte không gắn với bất kỳ kiểu dữ liệu nào, dữ liệu của bất kỳ kiểu dữ liệu nào có thể được đọc (trừ chuỗi) chỉ cần bạn phải xác định nó.

2.Character hướng đọc từng ký tự trong khi byte định hướng đọc byte bởi byte

suối hướng 3.Character sử dụng chương trình mã hóa ký tự (UNICODE) trong khi byte định hướng không sử dụng bất kỳ chương trình mã hóa

4. suối định hướng nhân vật còn được gọi là người đọc và nhà văn suối suối hướng Byte được gọi là dòng dữ liệu đầu vào suối-Data và output stream dữ liệu

10

ByteStreams:

Từ trang tài liệu oracle về byte streams:

Programs sử dụng dòng byte để thực hiện đầu vào và đầu ra của byte 8-bit. Tất cả các lớp luồng byte được chuyển xuống từ InputStreamOutputStream.

enter image description here

Khi sử dụng:

suối Byte chỉ nên được sử dụng cho tôi nguyên thủy nhất/O

Khi không sử dụng:

Bạn không nên sử dụng luồng Byte để đọc Luồng ký tự

ví dụ:Để đọc một file văn bản

Character Luồng:

Từ trang tài liệu oracle về character streams:

Java giá trị vật cửa hàng nền tảng sử dụng công ước Unicode. I/O dòng ký tự sẽ tự động dịch định dạng nội bộ này sang và từ bộ ký tự cục bộ.

Tất cả các lớp dòng ký tự được hạ xuống từ ReaderWriter.

Luồng ký tự thường là "trình bao bọc" cho luồng byte. Luồng ký tự sử dụng luồng byte để thực hiện I/O vật lý, trong khi dòng ký tự xử lý bản dịch giữa các ký tự và byte.

Có hai luồng "cầu nối" theo từng mục đích chung: InputStreamReaderOutputStreamWriter.

Khi sử dụng:

Để đọc nhân vật suối hoặc từ Socket hoặc File ký tự

Trong Tóm tắt:

Byte dòng đọc và viết một byte tại một thời gian. Chúng ta phải tránh việc sử dụng luồng byte trong khi xử lý dữ liệu phức tạp hơn.

Dòng ký tự và các luồng có sẵn khác sẽ được sử dụng để xử lý dữ liệu phức tạp.

+0

Những khái niệm này luôn là một bí ẩn. [Câu hỏi] (https://stackoverflow.com/q/46953036/3317808) – overexchange

0

Luồng ký tự sẽ đọc ký tự tệp theo ký tự. Các luồng ký tự có khả năng đọc các ký tự 16 bit (các luồng byte đọc các ký tự 8 bit). Các luồng ký tự có khả năng dịch dữ liệu 8 bit hoàn toàn sang dữ liệu 16 bit hoặc ngược lại. Luồng ký tự có thể hỗ trợ tất cả các loại bộ ký tự ASCII, Unicode, UTF-8, UTF-16 vv. Dòng byte chỉ phù hợp với bộ ký tự ASCII. Nền tảng Java lưu trữ các giá trị ký tự bằng cách sử dụng các quy ước Unicode. I/O dòng ký tự sẽ tự động dịch định dạng nội bộ này sang và từ bộ ký tự cục bộ.

Trừ khi bạn đang làm việc với dữ liệu nhị phân, chẳng hạn như tệp hình ảnh và âm thanh, bạn nên sử dụng độc giả và nhà văn để đọc và ghi thông tin với luồng ký tự.