Java中的文件输入/输出流

程序运行期间,大部分数据都在内存中进行操作,当程序结束或关闭时,这些数据将消失。如果需要将数据永久保存,可使用文件输入/输出流与指定的文件建立连接,将需要的数据永久保存到文件中。

1、FileInputStream与FileOutputStream类

FileInputStream类与FileOutputStream类都用来操作磁盘文件。FileInputStream是InputStream的子类,FileOutputStream是OutputStream类的子类。

FileInputStream常用的构造方法如下:

(1)FileInputStream(String name)

(2)FileInputStream(File file)

FileOutputStream类与FileInputStream类的构造方法相同,但是使用FileOutputStream创建对象时,可以指定不存在的文件名,但此文件不能是一个已被其它程序打开的文件。

示例如下:

public class FileTest {
	public static void main(String args[]) {
		File file = new File("word.txt");
		try {
			FileOutputStream out = new FileOutputStream(file);
			byte buy[] = "断剑重铸之日,骑士归来之时".getBytes();
			out.write(buy);
			out.close();
		}catch(Exception e){
			e.printStackTrace();
		}
		try {
			FileInputStream in = new FileInputStream(file);
			byte byt[] = new byte[1024];
			int len = in.read(byt);
			System.out.println("文件中的信息是:"+new String(byt,0,len));
			in.close();
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
}
/*输出结果如下:
文件中的信息是:断剑重铸之日,骑士归来之时
*/

2、FileReader与FileWriter类

对于FileOutputStream向文件中写入数据与使用FileInputStream类从文件中将内容读出来,都有一个缺点,即这两个类都只提供了对字节或字节数组的读取方法,所以在读取汉字的时候,可能会出现乱码的现象。使用Reader或Writer类可以避免,这两个类采用字符流。

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

通过以下示例来说明FileReader和FileWriter类的用法:

public class Ftest {
    public static void main(String args[]) {
        String s[] = {"java", "python", "c", "c++"};
        try {
            FileWriter out = new FileWriter("test.txt");
            BufferedWriter outBW = new BufferedWriter(out);
            for (int i = 0; i < s.length; i++) {
                outBW.write(s[i]);
                outBW.newLine();
            }
            outBW.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            FileReader in = new FileReader(new File("test.txt"));
            BufferedReader inBR = new BufferedReader(in);
            String stext = null;
            int j = 1;
            while ((stext = inBR.readLine()) != null) {
                System.out.println("第" + j + "行内容:" + stext);
                j++;
            }
            inBR.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
/*输出结果如下:
第1行内容:java
第2行内容:python
第3行内容:c
第4行内容:c++
*/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值