Sau khi cẩn thận cố gắng thực hiện truyền tệp TCP trong ứng dụng trò chuyện hội nghị của tôi bằng luồng byte thô, tôi đã quyết định gửi các tệp mà tôi muốn truyền qua luồng đối tượng dễ dàng hơn nhiều. Các tệp được gửi và lưu trữ tại đích của chúng (cho dù đó là máy chủ trung tâm hoặc máy khách tải xuống) như là các đối tượng Tệp trong bộ nhớ. Tuy nhiên, các tệp này không được sử dụng như chỉ các đối tượng Tệp - khách hàng có thể mở chúng. Có cách nào trong java để lưu các đối tượng tập tin như các tập tin đĩa cứng hoặc thậm chí mở chúng thông qua Java?Lưu/mở Java Các đối tượng tập tin
Trả lời
Ý của bạn là gì với "Đối tượng tệp"; Ý của bạn là java.io.File
?
Lớp java.io.File
chỉ là đại diện cho tên thư mục và tên tệp. Nó không phải là một đối tượng có thể chứa nội dung của một tập tin.
Nếu bạn có dữ liệu trong ví dụ một mảng byte trong bộ nhớ, sau đó có, bạn có thể tiết kiệm đó vào một tập tin:
byte[] data = ...;
OutputStream out = new FileOutputStream(new File("C:\\someplace\\filename.dat"));
out.write(data);
out.close();
Xem Basic I/O Lesson từ Oracle Java Hướng dẫn để biết cách đọc và viết các tệp có số FileInputStream
và FileOutputStream
.
Bạn nên nhìn vào Data Handlers
Bạn có thể sử dụng chúng để chuyển các tập tin như Data Sources
nhưng theo một cách "minh bạch" cho bạn.
Cảm ơn, sẽ xem xét chúng trong tương lai. –
Tôi đã quyết định sử dụng dễ dàng hơn nhiều để gửi tập tin mà tôi muốn chuyển qua suối đối tượng "
Nó không phải là Bad ý tưởng:.. Chi phí bộ nhớ và độ trễ (tức là thời gian và không gian) Chỉ cần gửi và nhận các byte, với các công cụ ở phía trước để cho bạn biết tên tập tin và kích thước tập tin
Tôi đã thử gửi tên tệp trước bằng cách sử dụng PrintWriter, một d sau đó các byte thô sử dụng BufferedOutputStream. Tên tệp và byte sẽ gửi từ phía người gửi không có vấn đề gì. Bên nhận cũng có thể nhận được tên tệp, tuy nhiên nó không thể nhận bất kỳ byte thô nào - nó chỉ tạo các tệp rỗng. Khi tôi chuyển sang sử dụng một luồng đối tượng, nó dường như hoạt động? –
@RichardStokes Điều đó sẽ không bao giờ hoạt động. Sử dụng các luồng giống nhau ở cả hai đầu cho tuổi thọ của kết nối. PrintWriter có một bộ đệm, BufferedOutputStream có một bộ đệm, BufferedReader có một bộ đệm, và BufferedInputStream có một bộ đệm. Quá nhiều bộ đệm cho sự gắn kết trên dây. Tôi sẽ sử dụng một DataOutputStream/DataInputStream cho mọi thứ, gửi tên tệp với writeUTF()/readUTF(), độ dài với writeLong()/readLong() và dữ liệu có write() và read(). – EJP
Wow cảm ơn, một nhận xét rất kỹ lưỡng. –
- 1. Truyền tập tin từ xa vào các đối tượng tập tin
- 2. Qt đối tượng/lớp để Qt ui tập tin
- 3. Cách viết một đối tượng vào tập tin trong C++
- 4. là đối tượng tập tin trong python một iterable
- 5. JRuby và các đối tượng Java
- 6. Làm thế nào để tạo ra đối tượng tập tin từ đối tượng URL
- 7. Các đối tượng tập tin nhái hoặc các lần lặp trong python
- 8. Xóa tập tin Java 6
- 9. Java - Tạo một bộ sưu tập đối tượng thân thiện
- 10. Launch tập tin từ Java
- 11. Java - Đọc tập tin XML
- 12. Hằng số Java tập tin
- 13. tập tin lớp học để chuyển đổi tập tin java
- 14. Các đối tượng JSP, JavaScript và Java
- 15. SWIG Java giữ lại thông tin lớp của các đối tượng nảy từ C + +
- 16. tiết kiệm và tải các đối tượng từ tập tin sử dụng jsonpickle
- 17. R: sắp xếp lại các đối tượng thành tập tin văn bản và ngược lại
- 18. gmake lấy danh sách các tập tin đối tượng từ nhiều thư mục
- 19. Java Tập tin tải lên MySQL
- 20. Pathconvert với tên tập tin tương đối
- 21. jackson deserialization json đối với các đối tượng java
- 22. Java Thuộc tính đối tượng để String
- 23. Java Client .class Bảo vệ tập tin
- 24. IntelliJ Idea 12 - tập tin Java là quá lớn đối với biên tập viên
- 25. so.6 libstdC++:. Không thể mở được chia sẻ tập tin đối tượng: Không có tập tin hoặc thư mục
- 26. tập tin tải lên trong Rails cho chuỗi tên tập tin thay vì Tệp or đối tượng StringIO
- 27. Java: Đọc mảng các số nguyên từ tập tin
- 28. Bộ sưu tập Java với các đối tượng có thể thay đổi
- 29. Generics Java: tạo bộ sưu tập các đối tượng lớp mở rộng Throwable
- 30. Bộ sưu tập NHibernate và các đối tượng chuyển động
xấu của tôi, không biết rằng java.io.File không thể giữ nội dung tập tin. hội đồng quản trị như vậy: ( –