Dopo aver tentato diligentemente di implementare il trasferimento di file TCP nella mia applicazione di chat per conferenze utilizzando flussi di byte non elaborati, ho deciso che è molto più semplice inviare i file che voglio trasferire attraverso i flussi di oggetto. I file vengono inviati e archiviati a destinazione (indipendentemente dal fatto che si tratti del server centrale o del client di download) come oggetti File in memoria. Tuttavia, questi file non sono utilizzabili solo come oggetti File: i client dovrebbero essere in grado di aprirli. C'è un modo in Java per salvare gli oggetti File come file del disco rigido o persino per aprirli tramite Java?Salvataggio/apertura Java Oggetti file
risposta
Cosa si intende per "Oggetti file"; intendi java.io.File
?
Classe java.io.File
è solo una rappresentazione di un nome di directory e nome file. Non è un oggetto che può contenere il contenuto di un file.
Se si hanno i dati in ad esempio un array di byte in memoria, allora sì, è possibile salvare quella di un file:
byte[] data = ...;
OutputStream out = new FileOutputStream(new File("C:\\someplace\\filename.dat"));
out.write(data);
out.close();
Vedi l'Basic I/O Lesson dal Tutorial Java di Oracle per imparare a leggere e scrivere file con FileInputStream
e FileOutputStream
.
si dovrebbe guardare in Data Handlers
È possibile utilizzarli per trasferire i file come Data Sources
ma in modo "trasparente" a voi.
Grazie, li guarderemo in futuro –
ho deciso che è molto più facile per inviare i file che voglio trasferito attraverso i flussi di oggetti "
Non è un'idea Bad:.. Costi di memoria e la latenza (cioè il tempo e lo spazio) Basta inviare e ricevere i byte, con elementi in primo piano per dirvi il nome del file e la dimensione del file
Ho provato ad inviare il nome del file prima usando un PrintWriter, un d quindi i byte grezzi utilizzando un BufferedOutputStream. Il nome file e i byte invierebbero dal lato mittente senza problemi. Il lato ricevente potrebbe anche ricevere il nome del file, ma non potrebbe ricevere nessuno dei byte grezzi - ha appena creato file vuoti. Quando sono passato all'utilizzo di un flusso di oggetti, sembrava funzionare? –
@RichardStokes che non funzionerà mai. Utilizzare gli stessi flussi su entrambe le estremità per la durata della connessione. PrintWriter ha un buffer, BufferedOutputStream ha un buffer, BufferedReader ha un buffer e BufferedInputStream ha un buffer. Troppi buffer per la coerenza attraverso il filo. Userei un DataOutputStream/DataInputStream per tutto, inviando il nome file con writeUTF()/readUTF(), la lunghezza con writeLong()/readLong() e i dati con write() e read(). – EJP
Wow grazie, un commento brillante e completo. –
- 1. Conversione di file flat in oggetti Java
- 2. Come distruggere oggetti java?
- 3. Progetto oggetti modello Java
- 4. raggruppamento oggetti Java 8
- 5. JSON Array di oggetti Java
- 6. scrittura di molti oggetti java in un singolo file
- 7. Generazione del file .proto da oggetti Java esistenti o xsd
- 8. Comunicazione oggetti C++ e Java
- 9. Java - copia di oggetti arraylist
- 10. Oggetti JSP, JavaScript e Java
- 11. Rappresentazione Java di oggetti serializzati
- 12. Java UnsupportedOperationException con Collection oggetti
- 13. java ArrayList contiene oggetti diversi
- 14. Come confrontare due oggetti java
- 15. Oggetti astratti di clonazione Java
- 16. serializzazione oggetti java - thread safe?
- 17. serializzazione oggetti java readObject/defaultReadObject
- 18. Conversione di oggetti Json in oggetti Java utilizzando Google Gson
- 19. Framework per la conversione di oggetti java
- 20. Streaming di file remoti in oggetti file
- 21. Java: Applicazione di oggetti doppiamente collegati
- 22. Condivisione di oggetti su processi Java
- 23. Java serializzazione degli oggetti e l'eredità
- 24. Concetti orientati agli oggetti Java in Javascript
- 25. Libreria Java per interrogare raccolte/oggetti
- 26. Convalida gli oggetti valore (ereditarietà) in java
- 27. Interject Java Oggetti eseguibili in ExecutorService
- 28. Elenco aggregato di oggetti in Java
- 29. Come denominare dinamicamente gli oggetti in Java?
- 30. Jackson deserializzazione di oggetti Java incorporato
Il mio male, non era a conoscenza del fatto che java.io.File non era in grado di contenere il contenuto del file. board :( –