betacode

Руководство Java FileInputStream

  1. FileInputStream
  2. Example 1

1. FileInputStream

FileInputStream - это подкласс InputStream, который используется для чтения двоичных файлов, таких как фотографи, музыка, видео. Полученные данные являются необработанными bytes (raw bytes). Для обычных текстовых файлов вместо этого следует использовать FileReader.
public class FileInputStream extends InputStream
FileInputStream constructors
FileInputStream​(File file)  

FileInputStream​(FileDescriptor fdObj)     

FileInputStream​(String name)
Большинство методов FileInputStream наследуются от InputStream:
public final FileDescriptor getFD() throws IOException  
public FileChannel getChannel()  

// Methods inherited from InputStream:

public int read() throws IOException   
public int read(byte b[]) throws IOException    
public int read(byte b[], int off, int len) throws IOException  
public byte[] readAllBytes() throws IOException   
public byte[] readNBytes(int len) throws IOException  
public int readNBytes(byte[] b, int off, int len) throws IOException
 
public long skip(long n) throws IOException  
public int available() throws IOException   

public synchronized void mark(int readlimit)  
public boolean markSupported()  

public synchronized void reset() throws IOException
public void close() throws IOException  

public long transferTo(OutputStream out) throws IOException
FileChannel getChannel()
используется для возврата уникального объекта FileChannel, связанного с этим FileInputStream.
FileDescriptor getFD()
используется для возврата объекта FileDescriptor.

2. Example 1

В качестве первого примера мы используем FileInputStream для чтения японского текстового файла, закодированного с помощью UTF-8:
utf8-file-without-bom.txt
JP日本-八洲
Примечание: UTF-8 использует 1, 2, 3 или 4 bytes для хранения одного символа. Тем временем FileInputStream считывает каждый byte из файла, так что вы получите довольно странный результат.
FileInputStreamEx1.java
package org.o7planning.fileinputstream.ex;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;

public class FileInputStreamEx1 {

    public static void main(String[] args) throws MalformedURLException, IOException {
        
        // Windows Path:  C:/Data/test/utf8-file-without-bom.txt
        String path = "/Volumes/Data/test/utf8-file-without-bom.txt";
        File file = new File(path);
 
        FileInputStream fis = new FileInputStream(file);
        
        int code;
        while((code = fis.read()) != -1) {
            char ch = (char) code;
            System.out.println(code + "  " + ch);
        }
        fis.close();
    }
}
Output:
74  J
80  P
230  æ
151  —
165  ¥
230  æ
156  œ
172  ¬
45  -
229  å
133  …
171  «
230  æ
180  ´
178  ²
Для чтения текстовых файлов UTF-8, UTF-16, ... вы должны использовать FileReader или InputStreamReader:

Руководства Java IO

Show More