java的io操作_Java 基本IO操作

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-30 01:22   148   0

1.基本IO操作

有时候我们编写的程序除了自身会定义一些数据信息外,还需要引用外界的数据,或是将自身的数据发送到外界,这时我们需要使用输入与输出。

1)输入与输出

输入:是一个从外界进入到程序的方向,通常我们需要“读取”外界的数据时,使用输入。所以输入是用来读取数据的

输出:是一个从程序发送到外界的方向,通常我们需要“写出”数据到外界时,使用输出。所以输出是用来写出数据的

2)节点流与处理流

按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。

节点流:可以从一个特定的地方(节点)读写数据,通常也称为低级流

处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写,通常也称为高级流或过滤流

处理流的构造方法总是要带一个其他的流对象做参数,一个流对象经过其他流的多次包装,称为流的链接。

3)IS和OS常用方法

InputStream是所有字节输入流的父类,其定义了基础的读取方法,如下:

int read():读取一个字节,以int形式返回,该int值的“低8位”有效,若返回值为-1则表示EOF

int read(byte[] d):尝试最多读取给定数组length个字节并存入该数组,返回值为实际读取到的字节量

OutputStream是所有字节输出流的父类,其定义了基础的写出方法,如下:

void write(int d):写出一个字节,写的是给定的int的“低8位”

void write(byte[] d):将给定的字节数组中的所有字节全部写出

4)创建FOS对象(重写模式)

FileOutputStream是文件的字节输出流,使用该流可以以字节为单位将数据写入文件。

FileOutputStream(File file):创建一个指定File对象表示的文件中写出数据的文件输出流

FileOutputStream(String filename):创建一个向具有指定名称的文件中写出数据的文件输出流

注意点:若指定的文件已经包含内容,那么当使用FOS对其写入数据时,会将该文件中原有的数据全部清楚。

案例1:FOS覆盖方式写文件

import java.io.FileOutputStream;

import java.io.IOException;

public class Test {

public static void main(String[] args) throws IOException {

FileOutputStream fos = new FileOutputStream("fos.txt");

String str = "Hello,World";

byte[] date = str.getBytes();

fos.write(date);

System.out.println("写出完毕");

fos.close();

}

}

5)创建FOS对象(追加模式)

若想在文件的原有数据之后追加新数据,则需要以下构造方法创建FOS:

FileOutputStream(File file,boolean append):创建一个向指定File对象表示的文件中写出数据的文件输出流

FileOutputStream(String filename,boolean append):创建一个向具有指定名称的文件中写出数据的文件输出流

以上两个构造方法中,第二个参数若为true,那么通过该FOS写出的数据都是在文件末尾追加的。

案例2:FOS追加模式写文件

import java.io.FileOutputStream;

import java.io.IOException;

public class Test {

public static void main(String[] args) throws IOException {

FileOutputStream fos = new FileOutputStream("fos.txt",true);

String str = "Hello,World";

byte[] date = str.getBytes();

fos.write(date);

System.out.println("写出完毕");

fos.close();

}

}

6)创建FIS对象

FileInputStream是文件的字节输入流,我们使用该流可以以字节为单位从文件中读取数据。FileInputStream有两个常用的构造方法,如下:

FileInputStream(File file):创建一个从指定file对象表示的文件中读取数据的文件输入流

FileInputStream(String name):创建用于读取给定的文件系统中的路径名name所指定的文件的文件输入流

案例3:FIS读取文件数据

import java.io.FileInputStream;

import java.io.IOException;

public class Test {

public static void main(String[] args) throws IOException {

FileInputStream fis = new FileInputStream("fos.txt");

int d = -1;

while((d=fis.read())!=-1){

System.out.print((char)d);

}

fis.close();

}

}

/*

* 运行结果:

* Hello,WorldHello,World

*/

7)read()和write(int d)方法

FileInputStream继承自InputStream,其提供了以字节为单位读取文XN/k9h`z+幯%9 [\]K[[R[]X[N[\]K[S[[\]K[[]X[TXY\XX\TKKH KO XX]XXZ[[H\HS[KKH KO [R[]X[H\N][R[]X[J  []X[TXY\\ N][]X[TXY\\[ NLN[J  NXY JHINJ^KKH KO [K [ \Y NO \J NO O  /c9 XN$y.yiK9n)h9$yde."9 b9/XNke`yykyg [\]K[[S^[[\]K[[]\ zd9kyg9:`(9yXN[]\[] O []\[H[JO 9"y!eyg XN[]\[] [O []\[H[K[O XX\[[KKH KO XX]XXZ[[H\H[S^[KKH KO []\N][]\  [ )y+[ m:-l:/[ "#9h[K [ 9J NO O b9/ XN$)y`XN9d#)y`-iy#Id#d9kyaiyl9k :(c9ke,l,y"z(c9ayaiy+I/]  9a" 9d#l!-9l9k+,9" [\]K[Y\YXY\[\]K[[R[]X[N[\]K[S[[\]K[[]X[TXY\[\]K[[]\[\]K][ [\XX\HKKH KO XX]XXZ[[H\HS[KKH KO [\[ N][\[K[N[K [ #N[[S[YH N[^[J N[]\N][]\[S[YK [K [ ykN[JYJ^KKH KO [[H N[^[J NY[K\]X[] ^KKH KO XZ O [[JNO [K [ 9nJ N[K [ NNNNNiyaykyleyNNNNN[R[]X[H\N][R[]X[J[S[YJN[]X[TXY\\ N][]X[TXY\\Y\YXY\ N]Y\YXY\\N[[H N[[J [INXY[J JHIN[ ^KKH KO [K [[JNO J NO O  /c9 +#N K +ykN gd)y+.k .#ycc.#y/$O ^] aya9nNNNNNiyaykyleyNNNNNgd)y+.k .#ycc.#y/$O  ]

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP