txt texto por linea leer escribir convert content como archivos archivo java fileinputstream

texto - ¿Cómo convertir FileInputStream en cadena en java?



leer un archivo de texto en java linea por linea (6)

En mi proyecto java, paso FileInputStream a una función, necesito convertir (encasillado FileInputStream en cadena), ¿Cómo hacerlo?

public static void checkfor(FileInputStream fis) { String a=new String; a=fis //how to do convert fileInputStream into string print string here }


De una respuesta que he editado here :

static String convertStreamToString(java.io.InputStream is) { if (is == null) { return ""; } java.util.Scanner s = new java.util.Scanner(is); s.useDelimiter("//A"); String streamString = s.hasNext() ? s.next() : ""; s.close(); return streamString; }

Esto evita todos los errores y funciona bien.


No cometa el error de confiar o convertir o perder innecesariamente los caracteres de la línea final. Hazlo personaje por personaje. No se olvide de usar la codificación de caracteres adecuada para interpresar el flujo.

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(); }

Si quieres hacer esto un poco más eficiente, puedes usar matrices de caracteres en su lugar, pero para ser honesto, el bucle sobre los personajes puede ser bastante rápido.

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(); }


No puedes convertirlo directamente en cadena. Debe implementar algo como esto. Agregue este código a su método.

//Commented this out because this is not the efficient way to achieve that //StringBuilder builder = new StringBuilder(); //int ch; //while((ch = fis.read()) != -1){ // builder.append((char)ch); //} // //System.out.println(builder.toString());

Utilice la solución de Aubin:

public static String getFileContent( FileInputStream fis, String encoding ) throws IOException { try( BufferedReader br = new BufferedReader( new InputStreamReader(fis, encoding ))) { StringBuilder sb = new StringBuilder(); String line; while(( line = br.readLine()) != null ) { sb.append( line ); sb.append( ''/n'' ); } return sb.toString(); } }


Usando la función de IOUtils de Apache commons

import org.apache.commons.io.IOUtils; InputStream inStream = new FileInputStream("filename.txt"); String body = IOUtils.toString(inStream, StandardCharsets.UTF_8.name());


Use el siguiente código ---->

try { FileInputStream fis=new FileInputStream("filename.txt"); int i=0; while((i = fis.read()) !=-1 ) { // to reach until the laste bytecode -1 System.out.print((char)i); /* For converting each bytecode into character */ } fis.close(); } catch(Exception ex) { System.out.println(ex); }


public static String getFileContent( FileInputStream fis, String encoding ) throws IOException { try( BufferedReader br = new BufferedReader( new InputStreamReader(fis, encoding ))) { StringBuilder sb = new StringBuilder(); String line; while(( line = br.readLine()) != null ) { sb.append( line ); sb.append( ''/n'' ); } return sb.toString(); } }