Java【IO系列】基礎篇—6. FileInputStream和FileOutputStream詳解

2021-03-02 人人有架設

本章介紹FileInputStream 和 FileOutputStream

目錄
1. FileInputStream 和 FileOutputStream 介紹
2. 示例程序

1. FileInputStream 和 FileOutputStream 介紹

FileInputStream 是文件輸入流,它繼承於InputStream。
通常,我們使用FileInputStream從某個文件中獲得輸入字節。

FileOutputStream 是文件輸出流,它繼承於OutputStream。
通常,我們使用FileOutputStream 將數據寫入 File 或 FileDescriptor 的輸出流。

關於File的介紹,可以參考文章「java io之 File總結」 。
關於FileDescriptor的介紹,可以參考文章「java io之 FileDescriptor總結」。

FileInputStream 函數接口

FileInputStream(File file)         FileInputStream(FileDescriptor fd) FileInputStream(String path)       
int available() void close() FileChannel getChannel() final FileDescriptor getFD() int read() int read(byte[] buffer, int byteOffset, int byteCount) long skip(long byteCount)

FileOutputStream 函數接口

FileOutputStream(File file)                   FileOutputStream(File file, boolean append)   FileOutputStream(FileDescriptor fd)           FileOutputStream(String path)                 FileOutputStream(String path, boolean append) 
void close() FileChannel getChannel() final FileDescriptor getFD() void write(byte[] buffer, int byteOffset, int byteCount) void write(int oneByte)

2. 示例程序

關於FileInputStream和FileOutputStream的API用法,參考示例代碼(FileStreamTest.java):

import java.io.File;import java.io.FileDescriptor;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.PrintStream;;import java.io.IOException;
public class FileStreamTest {
private static final String FileName = "file.txt";
public static void main(String[] args) { testWrite(); testRead(); }
private static void testWrite() { try { File file = new File(FileName); FileOutputStream fileOut1 = new FileOutputStream(file); PrintStream out1 = new PrintStream(fileOut1); out1.print("abcdefghijklmnopqrstuvwxyz"); out1.close();
FileOutputStream fileOut2 = new FileOutputStream(file, true); PrintStream out2 = new PrintStream(fileOut2); out2.println("0123456789"); out2.close();
} catch(IOException e) { e.printStackTrace(); } }
private static void testRead() { try { File file = new File(FileName); FileInputStream in1 = new FileInputStream(file);
FileInputStream in2 = new FileInputStream(FileName);
FileDescriptor fdin = in2.getFD(); FileInputStream in3 = new FileInputStream(fdin);
char c1 = (char)in1.read(); System.out.println("c1="+c1);
in1.skip(25);
byte[] buf = new byte[10]; in1.read(buf, 0, buf.length); System.out.println("buf="+(new String(buf)));

BufferedInputStream bufIn = new BufferedInputStream(in3); char c2 = (char)bufIn.read(); System.out.println("c2="+c2);
in1.close(); in2.close(); in3.close(); } catch(IOException e) { e.printStackTrace(); } }}

運行結果:

結果說明:

運行程序,會在源碼所在位置新生成一個文件「file.txt」。它的內容是「abcdefghijklmnopqrstuvwxyz0123456789」。

相關焦點

  • Java【IO系列】基礎篇—16. PrintWriter和RandomAccessFile詳解
    示例代碼關於PrintWriter中API的詳細用法,參考示例代碼(PrintWriterTest.java):import java.io.PrintWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;/**
  • Java【IO系列】基礎篇—9. DataInputStream和DataOutputStream
    DataInputStream.java源碼分析(基於jdk1.7.40)package java.io;public class DataInputStream extends FilterInputStream implements DataInput { // 構造函數。
  • Java Web安全 || Java基礎 · Java IO/NIO多種讀寫文件方式
    我們通常讀寫文件都是使用的阻塞模式,與之對應的也就是java.io.FileSystem。java.io.FileInputStream類提供了對文件的讀取功能,Java的其他讀取文件的方法基本上都是封裝了java.io.FileInputStream類,比如:java.io.FileReader。
  • Java【IO系列】基礎篇—15. BufferedReader和BufferedWriter詳解
    示例代碼關於BufferedReader中API的詳細用法,參考示例代碼(BufferedReaderTest.java):import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.File;import java.io.InputStream;
  • 夯實Java基礎系列16:一文讀懂Java IO流和常見面試題
    java.io)包下所有類的概述。通過編寫包裝了標準流的類,可以實現你想要的效果和過濾器。IO文件在Java應用程式中,文件是一種常用的數據源或者存儲數據的媒介。所以這一小節將會對Java中文件的使用做一個簡短的概述。這篇文章不會對每一個技術細節都做出解釋,而是會針對文件存取的方法提供給你一些必要的知識點。
  • Java【IO系列】基礎篇—1. IO框架
    最近,抽空整理以前所學的java基礎。整理也就是重新學習的過程,在這個學習過程中,我一直嘗試著站在一個更高的角度來看問題,將這些類和接口的原理和思想理解的更加透徹一些!1. java io簡介java io系統的設計初衷,就是為了實現「文件、控制臺、網絡設備」這些io設置的通信。例如,對於一個文件,我們可以打開文件,然後進行讀取和寫入。
  • 「JAVA」屬性、路徑分隔符有何不同?file對象創建,文件過濾器
    為解決這個問題,Java 在java.io.File類中提供了兩類常量,分別來表示路徑分隔符和屬性分隔符,官方源碼如下所示:java.io.File類 中的路徑分隔符和屬性屬性分隔符、路徑分隔符api文件過濾文件過濾器的存在,能夠很好的篩選出我們想要的文件;在Java中提供了java.io.FileFilter和java.io.FilenameFilter兩個文件過濾器,其中FilenameFilter過濾器值針對文件名稱提供過濾的
  • Java輸出流FileOutputStream使用詳解
    FileOutputStream提供了另外兩個構構造方法,分別是:FileOutputStream(File file, boolean append); FileOutputStream(String name, boolean append);
  • JNI 探秘 — 你不知道的 FileInputStream 的秘密
    ,迎來了LZ第一篇關於JAVA虛擬機的文章,這一系列文章不再像之前的設計模式一樣,有著嚴格的約束力,本系列文章相對會比較隨性,本次LZ就跟各位分享一個關於FileInputStream的小秘密。在探究這個秘密之前,各位如果沒有openjdk的源碼,可以去LZ的資源先下載下來,連結是:JVM源碼 和 JDK源碼。
  • 教你徹底學會Java序列化和反序列化
    序列化:對象序列化的最重要的作用是傳遞和保存對象的時候,保證對象的完整性和可傳遞性。方便字節可以在網絡上傳輸以及保存在本地文件。為什麼需要序列化和反序列化實現分布式核心在於RMI,可以利用對象序列化運行遠程主機上的服務,實現運行的時候,就像在本地上運行Java對象一樣。
  • JNI 探秘 — FileInputStream 的 read 方法詳解
    JNIEXPORT jint JNICALLJava_java_io_FileInputStream_read(JNIEnv *env, jobject this) {    return readSingle(env, this, fis_fd);//每一個本地的實例方法默認的兩個參數,JNI環境與對象的實例} JNIEXPORT
  • Java 非阻塞 IO 和異步 IO
    IO,也就是大家耳熟能詳的 NIO 和 AIO。package com.javadoop.aio;import java.io.IOException;import java.net.InetSocketAddress;import java.net.SocketAddress;import java.nio.ByteBuffer;import java.nio.channels.AsynchronousServerSocketChannel
  • Java File類(文件操作類)詳解
    在 Java 中,File 類是 java.io 包中唯一代表磁碟文件本身的對象,也就是說,如果希望在程序中操作文件和目錄,則都可以通過 File
  • Java 9 之 HttpClientAPI 實戰詳解
    jdk.incubator.http.HttpRequest;import jdk.incubator.http.HttpResponse;import jdk.incubator.http.MultiMapResult;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLParameters;import java.io.FileNotFoundException
  • 每日一課 | 如何將Java對象讀取和寫入文件
    如果Java對象的類或其任何超類實現java.io.Serializable接口或其子接口java.io.Externalizable ,則該對象是可序列化的。1.java.io.ObjectOutputStream將對象轉換為字節流。
  • Java之File類的構造方法
    >System.out.println(f1);//重寫了Object類的toString方法,列印的是一個路徑:c:\Users\java\code\a.textFile f2=new File("c:\\Users\\java\\code");System.out.println
  • JDK 源碼閱讀 : FileDescriptor
    /io/FileInputStream.cJNIEXPORT void JNICALLJava_java_io_FileInputStream_open(JNIEnv *env, jobject this, jstring path) {    fileOpen(env, this, path, fis_fd, O_RDONLY);}
  • Java基礎之Socket篇
    SmileThe Royal Concept - SmileJava基礎之Socket篇Hello,大家好!我是老醜,今天分享的是一些關於Socket的知識。本文閱讀預計15分鐘左右。目錄-什麼是Socket?
  • 20個非常有用的Java程序片段
    6、把 Java util.Date 轉成 sql.Datejava.util.Date utilDate;  import java.io.File;   ...    14、列出文件和目錄15、創建ZIP和JAR文件import java.util.zip.*;  import java.io.