Nie popełnia błąd opierając się na przekształcenie lub niepotrzebnie/utraty znaków linii końcowej. Zrób to postacią po znaku. Nie zapomnij użyć odpowiedniego kodowania znaków do interpretowania strumienia.
public String getFileContent(FileInputStream fis) {
StringBuilder sb = new StringBuilder();
Reader r = new InputStreamReader(fis, "UTF-8"); //or whatever encoding
int ch = r.read();
while(ch >= 0) {
sb.append(ch);
ch = r.read();
}
return sb.toString();
}
Jeśli chcesz, aby ten trochę bardziej wydajne, można zamiast tego użyć tablic znaków, ale szczerze mówiąc, zapętlenie ciągu znaków może być nadal dość szybko.
public String getFileContent(FileInputStream fis) {
StringBuilder sb = new StringBuilder();
Reader r = new InputStreamReader(fis, "UTF-8"); //or whatever encoding
char[] buf = new char[1024];
int amt = r.read(buf);
while(amt > 0) {
sb.append(buf, 0, amt);
amt = r.read(buf);
}
return sb.toString();
}
co chcesz przez to osiągnąć? naive to 'fis.toString();' –
Cóż, zawsze jest "fis.toString()", choć prawdopodobnie nie to, co chciałeś. * Dlaczego * chciałbyś zamienić 'fis' w łańcuch? – akaIDIOT
chcesz zawartość strumienia wejściowego pliku na ciąg? – Arpit