Java 使用FileOutputStream创建一个文件

Java 使用FileOutputStream创建一个文件

FileOutputStream类属于字节流,以单个字节的形式存储数据。它可以用来创建文本文件。一个文件代表了在第二个存储介质上的数据存储,如硬盘或CD。文件是否可用或可被创建,取决于底层平台。特别是一些平台,允许一个文件一次只能由一个FileOutputStream(或其他文件写入对象)打开写入。在这种情况下,如果所涉及的文件已经被打开,这个类的构造函数将失败。

FileOutputStream是用来写原始字节流的,如图像数据。对于写字符流,可以考虑使用FileWriter。

重要的方法

  • void close() : 关闭这个文件输出流并释放与这个流相关的任何系统资源。
  • protected void finalize() : 清理与文件的连接,并确保当不再有对这个流的引用时,这个文件输出流的关闭方法被调用。
  • void write(byte[] b) : 将指定字节数组中的b.length字节写入这个文件输出流。
  • void write(byte[] b, int off, int len) : 从指定的字节数组中,从偏移量off开始,写出len字节到这个文件输出流。
  • void write(int b) : 将指定的字节写到这个文件输出流中。

要创建一个存储一些字符(或文本)的文本文件,需要遵循以下步骤

  1. Reading data: 首先,应该从键盘上读取数据。为了这个目的,将键盘与一些输入流类联系起来。使用DataInputSream类从键盘上读取数据的代码如下。
DataInputStream dis =new DataInputStream(System.in);
Java

Here System.in represent the keyboard which is linked with DataInputStream object

  1. Send data to OutputStream: 现在,将一个要存储数据的文件与一些输出流联系起来。为此,在FileOutputStream的帮助下,可以将数据发送到文件中。将file.txt附加到FileOutputStream可以这样做。
FileOutputStream fout=new FileOutputStream(“file.txt”);
Java
  1. Reading data from DataInputStream: 下一步是从DataInputStream中读取数据并将其写入FileOutputStream中。这意味着从dis对象中读取数据并将其写入fout对象中,如图所示。
ch=(char)dis.read();
fout.write(ch);
Java
  1. Close the file: 最后,在对任何文件进行输入或输出操作后,应将其关闭,否则该文件的数据可能被破坏。关闭文件是通过关闭相关的流来完成的。例如,fout.close(): 将关闭FileOutputStream,因此没有办法向该文件写入数据。

实现

//Java program to demonstrate creating a text file using FileOutputStream
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
class Create_File
{
    public static void main(String[] args) throws IOException 
    {
        //attach keyboard to DataInputStream
        DataInputStream dis=new DataInputStream(System.in);
  
        // attach file to FileOutputStream
        FileOutputStream fout=new FileOutputStream("file.txt");
  
        //attach FileOutputStream to BufferedOutputStream
        BufferedOutputStream bout=new BufferedOutputStream(fout,1024);
        System.out.println("Enter text (@ at the end):");
        char ch;
  
        //read characters from dis into ch. Then write them into bout.
        //repeat this as long as the read character is not @
        while((ch=(char)dis.read())!='@')
        {
            bout.write(ch);
        }
        //close the file
        bout.close();
    }
}
Java

如果程序再次被执行,file.txt的旧数据将被丢失,而任何最近的数据只被保存在文件中。如果我们不想丢失文件中以前的数据,而只是将新的数据附加到已有数据的末尾,这可以通过在文件名旁写上 “true “来实现。

FileOutputStream fout=new FileOutputStream(“file.txt”,true);
Java

使用BufferedOutputStream提高效率

通常情况下,每当我们使用FileOutputStream将数据写到一个文件中时,作为。

fout.write(ch);
Java

这里,FileOutputStream被调用来将字符写入文件。让我们估计一下从键盘上读取100个字符并将其全部写入文件所需的时间。

  • 让我们假设用DataInputStream将数据从键盘读到内存中,用1秒时间将1个字符读到内存中,用FileOutputStream将这个字符写到文件中,再花1秒。
  • 所以读写一个文件需要200秒。这就浪费了很多时间。另一方面,如果使用Buffered类,它们会提供一个缓冲区,首先将缓冲区中的字符填满,然后就可以立即写入文件。缓冲类应与其他流类连接使用。
  • 首先,DataInputStream从键盘上读取数据,每个字符花费1秒。这个字符被写进缓冲区。因此,要读100个字符到缓冲区,需要100秒的时间。现在FileOutputStream将在一个步骤中写入整个缓冲区。所以,读和写100个字符只需要101秒。以同样的方式,阅读类被用来提高阅读操作的速度。将FileOutputStream附加到BufferedOutputStream上,就像。
BufferedOutputStream bout=new BufferedOutputStream(fout,1024);
Java

这里,缓冲区的大小被声明为1024字节。如果没有指定缓冲区的大小,那么将使用默认的512字节。

BufferedOutputStream类的重要方法

  • void flush() : 冲洗这个缓冲输出流。
  • void write(byte[] b, int off, int len) : 从偏移量off开始,从指定的字节数组中写入len字节到这个缓冲输出流。
  • void write(int b) : 将指定的字节写到这个缓冲输出流中。

输出

C:\> javac Create_File.java
C:\> java Create_File
Enter text (@ at the end):
This is a program to create a file
@

C:/> type file.txt
This is a program to create a file
Java

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册