我在InputStream處理時遇到了問題。我有SpringMVC項目文件上傳。文件是純文本文件。我首先要確保字符編碼,所以我使用流來檢測字符集編碼。然後根據這個編碼我嘗試讀取文件。我的問題是當我檢測到字符集InputStream指針向前移動,所以當我嘗試讀取文件後,它跳過文件的開始。重置Java中文件上載的InputStream
我想我可以將讀取字節添加到某個列表中,而不是首先讀取此列表並繼續流,但我不想結束整個文件在內存中。
如何從文件上傳開始流式傳輸?
我在InputStream處理時遇到了問題。我有SpringMVC項目文件上傳。文件是純文本文件。我首先要確保字符編碼,所以我使用流來檢測字符集編碼。然後根據這個編碼我嘗試讀取文件。我的問題是當我檢測到字符集InputStream指針向前移動,所以當我嘗試讀取文件後,它跳過文件的開始。重置Java中文件上載的InputStream
我想我可以將讀取字節添加到某個列表中,而不是首先讀取此列表並繼續流,但我不想結束整個文件在內存中。
如何從文件上傳開始流式傳輸?
XY問題。你不需要字符編碼。只需使用流複製傳入數據,而不是Readers
和Writers
。這樣,無論編碼是什麼,它都被保存下來。
一旦讀取了一些數據,就無法重新啓動流,這是流的功能。 你可以使用任何你喜歡的閱讀器類,例如
new BufferedReader(new InputStreamReader(stream, charset));
如果您不知道字符集事先並可以從默認的不同,你會更好的流內容保存到內存中的結構或文件,然後分析它。
謝謝你的回答,問題是我不想保留編碼。我正在用用戶上傳的數據生成pdf。 PDF是在utf-8中生成的,但用戶使用本地編碼上傳文件。所以我想先檢測編碼。因爲應該將它們轉換爲utf-8格式。 – aios