2011-03-31 7 views

Respuesta

12

Envuelva su Fileinputstream dentro de un BufferedInputStream.

Las marcas de soporte de las corrientes amortiguadas.

+0

¿Existe alguna manera de desactivar la función compatible con marca? – Roshan

+0

@Sathish Marking es más como una función, incluso si la función está allí, depende del usuario usarla o no. Pero si quiere evitar forzosamente marcar, puede crear una clase de decorador y anular el método mark() para no hacer nada y marqueSupported() para que devuelva false. –

+0

Esto no siempre es correcto: puede dar como resultado "Restablecer a marca no válida", no es consistente. – ha9u63ar

10

Envuélvala en BufferedInputStream.

en lugar de

FileInputStream fis = new FileInputStream(...); 

hacer esto:

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(...)); 

y utilizar bis en lugar de fis; nada más debería tener que cambiar en tu código.

+0

nombre de archivo ruso no se encuentra excepción en esta línea nueva FileInputStream (...) ¿qué debo hacer otro todo el archivo funciona bien pero russinal char no compatible con el nombre de archivo –

+0

Existe una buena posibilidad de que obtenga la causa IOException "Restablecer a marca no válida". – ha9u63ar

0

intentar algo como esto

public FileInputStream fstream; 
public DataInputStream in; 
public BufferedInputStream bs; 
public String path; 

public void myExample() throws IOException{ 
    path = "yourPath"; 
    try { 
     fstream = new FileInputStream(path); 
     in = new DataInputStream(fstream); 
     bs = new BufferedInputStream(new InputStreamReader(in)); 

     //do something 

     br.close(); //when do something is completed 
     } catch (FileNotFoundException ex) { 
     JOptionPane.showMessageDialog(null, "File not found"); 
     } 
     } 
8

BufferedInputStreams no son magia. Solo admitirán el marcado por tan grande como sus búferes subyacentes y estos búferes ocuparán memoria. Por lo tanto, si sigue esta ruta, es importante que comprenda el caso de uso y, potencialmente, llame al constructor BufferedInputStream con el búfer de tamaño adecuado. Si el archivo subyacente comienza a agrandarse y usted marca lo suficientemente atrás, esta técnica puede no funcionar para usted.

Cuestiones relacionadas