Περισσότερα
Πώς μπορώ να διαβάσω/μετατρέψω ένα InputStream σε String στη Java;
Αν έχετε ένα αντικείμενο java.io.InputStream
, πώς πρέπει να επεξεργαστείτε αυτό το αντικείμενο και να παράγετε ένα String
;
Ας υποθέσουμε ότι έχω ένα InputStream
που περιέχει δεδομένα κειμένου, και θέλω να το μετατρέψω σε String
, ώστε για παράδειγμα να μπορώ να το γράψω σε ένα αρχείο καταγραφής.
Ποιος είναι ο ευκολότερος τρόπος για να πάρω το InputStream
και να το μετατρέψω σε String
;
public String convertStreamToString(InputStream is) {
// ???
}
3842
3
Ένας ωραίος τρόπος για να το κάνετε αυτό είναι να χρησιμοποιήσετε το Apache commons
IOUtils
για να αντιγράψετε τοInputStream
σε έναStringWriter
... κάτι σανή ακόμα και
Εναλλακτικά, θα μπορούσατε να χρησιμοποιήσετε το
ByteArrayOutputStream
αν δεν θέλετε να αναμειγνύετε τις ροές και τους συγγραφείς σας.Το Apache Commons επιτρέπει:
Φυσικά, θα μπορούσατε να επιλέξετε και άλλες κωδικοποιήσεις χαρακτήρων εκτός του UTF-8.
Δείτε επίσης: (τεκμηρίωση)
Λαμβάνοντας υπόψη το αρχείο θα πρέπει πρώτα να αποκτήσετε μια περίπτωση
java.io.Reader
. Αυτό μπορεί στη συνέχεια να διαβαστεί και να προστεθεί σε έναStringBuilder
(δεν χρειαζόμαστε τοStringBuffer
αν δεν έχουμε πρόσβαση σε αυτό σε πολλαπλά νήματα, και τοStringBuilder
είναι ταχύτερο). Το κόλπο εδώ είναι ότι δουλεύουμε σε μπλοκ, και ως εκ τούτου δεν χρειαζόμαστε άλλες ροές buffering. Το μέγεθος του μπλοκ παραμετροποιείται για βελτιστοποίηση της απόδοσης κατά τη διάρκεια εκτέλεσης.