java OutputStream使用方法

Python013

java OutputStream使用方法,第1张

outputStream是流的形式,具体可以表现为FileOutputStream的形式进行整行的写入。 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。(OutputSteam的子类)

可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:

OutputStreamWriter pw = null//定义一个流 。

pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"GBK")//确认流的输出文件和编码格式,此过程创建了“test.txt”实例 。

pw.write("是要写入到记事本文件的内容")//将要写入文件的内容,可以多次write pw.close()//关闭流 。

备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。

扩展资料:

创建对象成功后,可以参照以下方法,对流进行写操作或者其他操作。

1.public final void write(byte[] w, int off, int len)throws IOException.

将指定字节数组中从偏移量 off 开始的 len 个字节写入此字节数组输出流。 

2.Public final int write(byte [] b)throws IOException.

将指定的字节写入此字节数组输出流。 

3.这些方法将指定的基本数据类型以字节的方式写入到输出流。

public final void writeBooolean()throws IOException.

public final void writeByte()throws IOException.

public final void writeShort()throws IOException.

public final void writeInt()throws IOException.

4.Public void flush()throws IOException.

刷新此输出流并强制写出所有缓冲的输出字节。 

5.public final void writeBytes(String s) throws IOException.

将字符串以字节序列写入到底层的输出流,字符串中每个字符都按顺序写入,并丢弃其高八位。 

参考资料来源:百度百科—OutputStream

在“面向对象编程:Java collection更有效管理elements”一文中,我们讨论了Java 集合类架构中的类和功能并介绍了它的排序功能。在本文中,我们将学习Java 平台提供的这些I/O类,接口和操作。让我们先从了解Java 数据流开始。 数据流 Java所有的I/O机制都是基于数据流的,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 Java.io是大多数面向数据流的输入/输出类的主要软件包。这个软件包包含了两个抽象类,InputStream和OutputStream。所有其它面象数据流的输入/输出类都要扩展这两个基类。 java.io软件包提供了一些类和接口,它们在由InputStream和OuputStream类提供的读写操作的顶端定义了一些有用的抽象。例如,ObjectInputStream类提供了让你把输入/输出流中的数据当成对象来读取的方法,而ObjectOutputStream类提供了让你能够把Java对象写入数据流中的方法。 优化读写过程 JDK 1.1 增加了一套读写类,它们提供了比现有数据流类更有用的抽象和更好的输入/输出性能。例如,BufferedReader和BufferedWriter 类被用来从基于字符的输入和输出流中读取和写入文本。BufferdReader 类缓存字符以更高效的读取字符串,数组和文本行。BufferedWriter类缓存字符以更高效的写入字符串,数组和文本行。BufferedReader和BufferedWriter 类可以按需求进行设置。 Java输入/输出架构提供的读取器和写入器类包括 LineNumberReader 类,CharArrayReader类,FileReader类,FilterReader类,PushbackReader类,PipedReader类,StringReader类以及其它一些类。这些类是在InputStream和OuputStream类顶部的包裹类因此提供了与InputStream和OuputStream类相似的方法。但是,这些类为读写特定的对象,比方文件,字符数组和字符串等等提供了更高效而有用的抽象。 读取数据 当你从一个相应的数据源对象里提取输入流或者是创建一个读取器对象的时候就会自动打开一个输入流。例如,要为一个文件打开输入流,我们只需要以下面的方式把文件名传递给Java.io.FileReader对象的构造函数: java.io.FileReader fileReader = new java.io.FileReader("/home/me/myfile.txt".net/forum/images/smiles/icon_wink.gif border=0>要按顺序读取FileReader底层的输入流中的一个字节数据,只需要使用不带参数的read方法。表A中的代码段从一个文件读取文本数据,一次一个字符,然后把它写入System.out里。 要从输入流读取指定数目的字节数据到char数组里,只需要使用带一个char[]参数的read方法。数组的长度被用来确定应该读取的字符的个数。表B演示了这个技术。 要关闭一个输入流以及这个流使用的所有系统资源,你只需要以下面的方式调用close方法: fileReader.close()写入数据 象一个输入流一样,输出流通常在你从相应的数据源提取它或者是在你创建一个写入对象的时候被自动的打开。例如,要为一个文件打开输出流,我们把文件的名字传递给java.io.FileWriter对象的构造函数,如下所示: java.io.FileWriter fileWriter = new java.io.FileWriter("/home/me/out.txt".net/forum/images/smiles/icon_wink.gif border=0>要将一个特定的字符写入到输出流中,可以使用带一个int参数的write方法,int参数代表要定入的字符。 int aChar = (int)'X'fileWriter.write(aChar)要在输出流给定的偏移地址写入一个char数组中特定数目的字符,你可以使用带一个char[]参数,一个int 偏移量参数和一个int长度参数的write方法,如下面的例子所示: fileWriter.write(buffer, 0, byteCount)要关闭一个输出流并释放所有与之相关的系统资源,可以使用close方法,就象这样: fileWriter.close()要强迫写出一个输出流中的所有数据,可以使用下面的flush方法: fileWriter.flush()把它们全部综合起来 我们可以使用我们学习过的这些函数从一个文件中读取数据并同时写到另一个文件中去,如表C所示。 总结Java的输入/输出机制为从不同的数据源读取和写入字符增加了一套简单而标准化的API。你对一种数据源使用Java流的经验能够让你容易的使用其它由Java提供的数据源类型。 在我们下一篇文章中,我们将会开始学习Java平台的联网和远程通讯架构。我们将会把我们对Java流的讨论扩展到这些环境并演示如何打开远程数据源,并象操作本地数据源,比方文件一样,写入数据和读取数据

path是个字节流----path只是一个字符串,不涉及流的问题,他是一个String类型,内容是路径

为什么要转成字符流 字节流不行么?---应该是读取中文的问题,不然会有乱码

还有为什么要用bufferedReader不用stringReader接受path不是个字符串类型的么?-----bufferedReader可以一行一行读取,效率比较高