java IO之文件输入输出流

java IO之文件输入输出流

         程序运行期间,大部分的数据都是在内存中,但是当程序关闭之后,内存中的数据便会消失。如果我们想让数据可以永久保存,就需通过文件输入输出流与文件建立联系,将需要的数据存入文件中。

1.  FileInputStream类

参考博文:FileInputStream

2.  FileOutputStream类

参考博文:FileOutputStream

3.  FileReader类和FileWriter类

由于汉字占用两个字节,使用FileInputStream从文件中读取数据与使用FileOutputStream向文件中写入数据,可能会造成文件的乱码,使用FileReader和FileWriter便可以避免这种现象,因为在java中采用的Unicode字符,而在Unicode中汉字被看作是一个字符。

FileReader和FileWriter是与FileInputStream和FileOutputStream这两种字节流相对应的两种字符流,它们分别是Reader和Write的子类。

 

FileReader的构造方法如下:

Ø FileReader(String name):使用给定的名称name创建一个FileReader对象;

Ø  FileReader (File file):使用File对象创建一个FileReader对象。

Ø  

FileWriter的构造方法如下:

Ø FileWriter(String name):使用给定的名称name创建一个FileWriter对象;

Ø  FileWriter (File file):使用File对象创建一个FileWriter对象。

Ø FileWriter(String fileName,boolean append):使用给定的名称name创建一个FileWriter对象,如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。

Ø FileWriter(File file, booleanappend):使用File对象创建一个FileWriter对象,如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。

 

FileReader流顺序的读取文件,只要不关闭流,每次调用read方法就顺序地读取源中其余的内容,直到源的末尾或流被关闭。FileReader的方法可以参考FileInputStream的方法。

 

FileWriter流顺序的写入文件,只要不关闭流,每次调用write方法就顺序地把内容写入到源中,直到流被关闭或者发生异常。FileWriter的常用方法可以参考博文:Java IO之输入输出流 中Writer类的常用方法。

 

实例:用FileWriter向C盘中的test.txt中写入键盘录入的数据,然后用FileReader读取输出到控制台。

代码如下:

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class FileDemo {
    public staticvoidmain(String[] args){
        File file;
        char[] data=newchar[512];
        int b;
        try {
            file=new File("C:"+File.separator+"test.txt");
            FileWriter writer=new FileWriter(file);
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入测试内容:");
            String str=sc.nextLine();
            writer.write(str);
            writer.close();
            FileReader reader=new FileReader(file);    
            while((b=reader.read(data,0,512))!=-1){
                String s=new String(data,0,b);
            System.out.println(s);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


结果为:

请输入测试内容:

大家好,这是我做的个人总结,希望可以供大家参考!

大家好,这是我做的个人总结,希望可以供大家参考!

C盘test.txt文件中的内容为:

大家好,这是我做的个人总结,希望可以供大家参考!

 

你可能感兴趣的:(java)