我有以下代码:
public static void main(String[] args) throws Exception {
FileInputStream inputStream = new FileInputStream("c:/data.txt");
FileOutputStream outputStream = new FileOutputStream("c:/result.txt");
while (inputStream.available() > 0) {
int data = inputStream.read();
outputStream.write(data);
}
inputStream.close();
outputStream.close();
}
我不明白以下内容:int data = inputStream.read();
获取文件c:/data.txt的字节,逐字节读取,然后在变量数据中自动串联,或者inputStream.read()
一次全部读取文件c:/data.txt
并将所有内容分配给数据变量?
来自JavaDoc:
A FileInputStream
从文件系统中的文件获取输入字节。FileInputStream
用于读取原始字节流,例如图像数据。要阅读字符流,请考虑使用FileReader
问题:获取文件
c:/data.txt
的字节,逐字节读取,然后在变量中自动串联数据或inputStream.read()
读取文件c:/data.txt
全部位于一次,然后将所有内容分配给数据变量?
为了回答这个问题,请举例:
try {
FileInputStream fin = new FileInputStream("c:/data.txt");
int i = fin.read();
System.out.print((char) i);
fin.close();
} catch (Exception e) {
System.out.println(e);
}
在运行上述程序之前,创建了一个带有文本data.txt
的Welcome to Stackoverflow
文件。
执行上述程序后,控制台将打印单张文件中的字符
87
(字节形式),很清楚指示FileInputStream#read
用于读取字节输入流中的数据。
因此,FileInputStream
通过byte
读取数据byte
。
Java FileInputStream类java.io.FileInputStream使得可以将文件的内容读取为字节流。
Java FileInputStream类是Java InputStream的子类。这意味着您将Java FileInputStream用作InputStream(FileInputStream的行为类似于InputStream)。
InputStream的read()方法返回一个int,其中包含读取的字节的字节值。这是一个InputStream read()示例:
int data = inputstream.read();
有关更多详细信息,您可以在这里post 1签出>>
java.io.InputStream.read(byte[] b, int off, int len)
方法从输入流最多读取len个字节的数据到一个字节数组中。如果参数len为零,则不读取任何字节,并返回0;否则,返回0。否则,尝试读取至少一个字节。如果流在文件的末尾,则返回的值为-1。
声明:
public int read(byte[] b, int off, int len)
有关更多信息,您可以通过post 2