2011-11-25 31 views

Trả lời

3

Điều đó tùy thuộc vào cách sử dụng tính năng này. Bạn thấy đấy, trong khi bạn làm nội dung với một tệp bằng Python, bạn không làm bất cứ điều gì với một số File trong Java! Vâng, ngoài nhiệm vụ như kiểm tra sự cho phép, tạo vv

Tất cả các I/O trong Java và Scala được dựa trên một trong hai khái niệm:

  • InputStreamOutputStream
  • ReaderWriter

Điều bạn làm là tạo một một trong các lớp học này qua Filethông số. Vì vậy, nếu bất kỳ API nào bạn đang sử dụng đều có ý định nhận được File, bạn không thể làm bất kỳ điều gì về nó. Tuy nhiên, API thường sẽ thực hiện một trong các lớp ở trên, không phải là File và tất cả chúng đều có sẵn phiên bản chuỗi.

Đối với Scala, cũng có scala.io.Stream, bạn cũng có thể tạo một cái dựa trên String.

+0

Mục đích của tôi là vì dữ liệu được tạo ra trong java/scala, tôi chỉ không muốn ghi nó trên đĩa của tôi trước khi chuyển nó sang một hàm khác yêu cầu tệp (mà, tôi không có nguồn.). Nhưng tôi sẽ ghi nhớ điều đó khi viết mã của riêng tôi. Cảm ơn lời giải thích rõ ràng. –

1

Java có ByteArrayOutputStream.

OutputStream out = new ByteArrayOutputStream(); 
out.write(...); 
String result = new String(out.toByteArray()); 
11

Tôi tin rằng StringWriter là những gì bạn đang tìm kiếm.

+0

Tôi không chắc đó có phải là những gì tôi đang tìm kiếm hay không. Tôi muốn biết nếu có một lớp mà tôi có thể thao tác như chuỗi nhưng cũng có thể sử dụng như là một đối số cho chức năng mà muốn tập tin như tham số. –

+0

@ TT: Không, trong trường hợp đó không có gì bạn có thể làm, bởi vì File về cơ bản là một trình bao bọc xung quanh một đường dẫn, nó không có bất kỳ phương thức nào để truy cập nội dung. –

+0

Ok sau đó. Tôi muốn sử dụng StringIO kể từ khi tôi sử dụng nó rất nhiều trong python. Tôi đoán tôi phải viết nó xuống đầu tiên. –

Các vấn đề liên quan