![](/img/trans.png)
[英]How to convert HttpPostedFileBase file to Java.Io.InputStream?
[英]The Java.io.InputStream class is the superclass of all classes representing an input stream of bytes. How is it reading a file with characters?
我有一個名為mark_method.json
的文件, mark_method.json
包含ABCDE
,我正在使用InputStream
class
讀取該文件。
根據定義, InputStream
class
讀取字節輸入流。 這是如何運作的? 我的文件中沒有字節,但是字符?
我想了解讀取字節的流如何從文件中讀取字符?
public class MarkDemo {
public static void main(String args[]) throws Exception {
InputStream is = null;
try {
is = new FileInputStream("C:\\Users\\s\\Documents\\EB\\EB_02_09_2020_with_page_number_and_quote_number\\Old_images\\mark_method.json");
}
catch(Exception e) {
e.printStackTrace();
} finally {
if(is != null) {
is.close();
}
}
}
}
計算機上的每個數據都以位和字節存儲。 這里文件的內容也以字節為單位存儲。
我們有將這些字節轉換為人類可讀形式的程序,因此我們看到mark_method.json
文件包含字符而不是字節。
一個字符是一個字節。 (至少在 ASCII 中)。 從 0 到 127 的每個字節都有一個字符值。 例如 0 是空字符, 0xa 是\\n
, 0xd 是\\r
, 0x41 是'A'
等等。
實現只知道字節。 它不知道,字符 0x2709 是 ✉。 它只將其視為兩個字節:0x27 和 0x09。 只有文本編輯器解釋字節並顯示匹配的符號/字母
我認為您在這里實際問的是如何將使用FileInputStream
從文件中讀取的字節轉換為可以打印和操作的 Java String
對象。
FileInputStream
沒有任何用於直接生成String
對象的讀取方法,因此如果這是您想要的,您需要進一步操作您獲得的輸入。
選項一是使用Scanner
類:
Scanner scanner = new Scanner(is);
String word = scanner.next();
另一種選擇是讀取字節並使用與字節數組一起使用的String
類的構造函數:
byte [] bytes = new byte[10];
is.read(bytes);
String text = new String(bytes);
請注意,為簡單起見,我只是假設您可以從文件中讀取 10 個有效字節。 在實際代碼中,您需要一些邏輯來確保讀取正確的字節數。
此外,如果您的文件不是使用系統默認字符集存儲的,則需要將字符集指定為String
構造函數的參數。
最后,您可以使用另一個包裝類BufferedReader
,它有一個readLine
函數,它負責從文件中讀取表示一行文本的字節並將它們返回到String
所需的所有邏輯。
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
String line = in.readLine();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.