java io操作

来源:互联网 发布:烟台南山学院教务网络 编辑:程序博客网 时间:2024/05/29 02:33

java.io包中流的操作主要有字节流、字符流两大类,两类都有输入和输出操作。在字节流中输出数据主要使用OutputStream类完成,输入使用的是InputStream类。在字符流中输出主要是使用Writer类完成,输入主要是使用Reader类完成。

在Java中IO操作也是有相应步骤的,以文件的操作为例,主要的操作流程如下:

1、使用File类打开一个文件。

2、通过字符流或字节流的子类指定输出的位置。

3、进行读/写操作。

4、关闭输入/输出。

字节流

1、字节输出流

字节流主要操作byte类型数据,以byte数组为准,主要操作类是OutputStream类和InputStream类。

例1 向文件中写入字符串

public class OutputStreamDemo01 {public static void main(String[] args) throws IOException {//第一步:使用File类找到一个文件File f=new File("d:"+File.separator+"test.txt");//第二部:通过子类实例化父类对象OutputStream out=new FileOutputStream(f);//第三部进行写操作String str="Hello World!";byte b[]=str.getBytes();out.write(b);out.close();}

之前的所有操作中,如果重新执行程序,则肯定会覆盖文件中的已有内容,那么此时可以通过FileOutputStream类的另外一个构造方法进行实例化,这样在写入的时候就表示项文件中追加内容,次构造方法如下所示:

public FileOutputStream(File file,boolean append);

在构造方法中,如果将append的值设置为true,则表示在文件的末尾追加内容。

例2追加文件内容

public class OutputStreamDemo01 {public static void main(String[] args) throws IOException {//第一步:使用File类找到一个文件File f=new File("d:"+File.separator+"test.txt");//第二部:通过子类实例化父类对象OutputStream out=new FileOutputStream(f,true);//第三部进行写操作String str="Hello World!";byte b[]=str.getBytes();for(int i=0;i<b.length;i++){out.write(b[i]);}out.close();}}

2、字节输入流

例3 从文件中读取内容

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class OutputStreamDemo01 {public static void main(String[] args) throws IOException {File file=new File("d:"+File.separator+"test.txt");InputStream in=new FileInputStream(file);String str="";byte[] b=new byte[1024];int len=in.read(b);str=new String(b,0,len);in.close();System.out.println(str);}}

例4 通过判断是否读到文件末尾的方式来读取文件;

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class OutputStreamDemo01 {public static void main(String[] args) throws IOException {File file=new File("d:"+File.separator+"test.txt");InputStream in=new FileInputStream(file);int len=0;byte []b=new byte[1024];//将所有的数据存入该字节数组中int temp=0;while((temp=in.read())!=-1){//in.read()每次从输入流中读取一个字节数据,当读取的值为-1时表明输入流内已经读到底    b[len]=(byte) temp;    len++;}in.close();System.out.println(new String(b,0,len));}}