2012-01-24 45 views
6

Tôi cố gắng đặt một số chuỗi vào CharBuffer với chức năng CharBuffer.put() nhưng bộ đệm được để trống.CharBuffer.put() không hoạt động

mã của tôi:

CharBuffer charBuf = CharBuffer.allocate(1000); 
for (int i = 0; i < 10; i++) 
{ 
    String text = "testing" + i + "\n"; 
    charBuf.put(text); 
} 
System.out.println(charBuf); 

Tôi cố gắng để sử dụng với clear() hoặc rewind() sau allocate(1000) nhưng điều đó không thay đổi kết quả.

Trả lời

2

Bạn phải tua lại nó sau khi bạn đặt vào các đối tượng, hãy thử này

CharBuffer charBuf = CharBuffer.allocate(1000); 
for (int i = 0; i < 10; i++) 
{ 
    String text = "testing" + i + "\n"; 
    charBuf.put(text); 
} 
charBuf.rewind(); 
System.out.println(charBuf); 
3

Thêm một cuộc gọi đến rewind() đúng sau vòng lặp.

3

Hãy thử điều này:

CharBuffer charBuf = CharBuffer.allocate(1000); 
for (int i = 0; i < 10; i++) 
{ 
    String text = "testing" + i + "\n"; 
    charBuf.put(text); 
} 
charBuf.rewind(); 
System.out.println(charBuf); 

Các chi tiết mà bạn đang thiếu là viết di chuyển con trỏ hiện tại đến hết dữ liệu bằng văn bản, vì vậy khi bạn đang in nó ra, nó bắt đầu từ con trỏ hiện tại , không có gì được viết.

3

Bạn cần phải flip() bộ đệm trước khi có thể đọc từ bộ đệm. Phương thức flip() cần phải được gọi trước khi đọc dữ liệu từ bộ đệm. Khi phương thức flip() được gọi là giới hạn được đặt thành vị trí hiện tại và vị trí là 0. ví dụ:

CharBuffer charBuf = CharBuffer.allocate(1000); 
for (int i = 0; i < 10; i++) 
{ 
    String text = "testing" + i + "\n"; 
    charBuf.put(text); 
} 
charBuf.flip(); 
System.out.println(charBuf); 

Ở trên sẽ chỉ in các ký tự trong bộ đệm và không phải khoảng trống không được viết trong bộ đệm.