ג'אווה - קורא ל- InputStream

במדריך מהיר זה נבחן ההמרה מא קוֹרֵא ל InputStream - תחילה עם Java רגיל, אחר כך עם גויאבה ולבסוף עם ספריית IO של Apache Commons.

מאמר זה הוא חלק מסדרת "Java - Back to Basic" כאן בבלדונג.

1. עם ג'אווה

נתחיל בפתרון Java:

@ מבחן חלל ציבורי givenUsingPlainJava_whenConvertingReaderIntoInputStream_thenCorrect () זורק IOException {Reader initialReader = new StringReader ("עם Java"); char [] charBuffer = char חדש [8 * 1024]; בונה StringBuilder = StringBuilder חדש (); int numCharsRead; בעוד ((numCharsRead = initialReader.read (charBuffer, 0, charBuffer.length))! = -1) {builder.append (charBuffer, 0, numCharsRead); } InputStream targetStream = ByteArrayInputStream חדש (builder.toString (). GetBytes (StandardCharsets.UTF_8)); initialReader.close (); targetStream.close (); }

שימו לב שאנחנו קוראים (וכותבים) נתחי נתונים בכל פעם.

2. עם גויאבה

הבא - בואו נסתכל על ה- פתרון גויאבה הרבה יותר פשוט:

@Test הציבור בטל givenUsingGuava_whenConvertingReaderIntoInputStream_thenCorrect () זורק IOException {Reader initialReader = חדש StringReader ("עם גויאבה"); InputStream targetStream = ByteArrayInputStream חדש (CharStreams.toString (initialReader) .getBytes (Charsets.UTF_8)); initialReader.close (); targetStream.close (); }

שימו לב שאנחנו משתמשים בזרם קלט מחוץ לקופסה שהופך את כל ההמרה לליין אחד.

3. עם IO של Commons

לסיום - בואו נסתכל פתרון IO של Commons - גם אניה אחת פשוטה:

@ מבחן חלל ציבורי שניתןUsingCommonsIO_whenConvertingReaderIntoInputStream () זורק IOException {Reader initialReader = new StringReader ("With Commons IO"); InputStream targetStream = IOUtils.toInputStream (IOUtils.toString (initialReader), Charsets.UTF_8); initialReader.close (); targetStream.close (); }

שים לב שאנחנו כאן עוסקים בכל סוג של קורא - אבל אם אתה עובד במיוחד עם נתוני טקסט, תמיד מומלץ לציין את ערכת התווים במפורש במקום להשתמש בברירת המחדל של JVM.

ויש לך את זה - 3 דרכים פשוטות לשנות את קוֹרֵא לתוך InputStream. הקפד לבדוק את הדגימה ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found