免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1106 | 回复: 0
打印 上一主题 下一主题

IO:FileInputStream和FileOutputStream [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-02 21:55 |只看该作者 |倒序浏览
FileInputStream和FileOutputStream类分别用来创建磁盘文件的输入流和输出流对象,通过它们的构造函数来指定文件路径和文件名。创建FileInputStream对象实例时,指定的文件应该是存在和可读的,创建FileOutputStream实例对象时,如果指定的文件已经存在,这个文件中的原来内容就会被覆盖。
对于一个磁盘文件来创建FileInputStream类的Stream对象可以有下面两种方式:
(1)FileInputStream fis = new FileInputStream("test.txt");
(2)File f = new File("test.txt");
    FileInputStream fis = new FileInputStream(f);
第二种可以对test文件进行很多的File类的操作,比如判断是否存在,是否可写等等。这是File那篇文章里面的内容。
创建一个FileOutputStream实例对象的时候,可以指定还不存在的文件名,但是不能指定一个被其它程序打开的文件。
下面来看一个例子:用FileOutputStream类向文件中写入一个串字符,然后用FileInputStream读出写入的内容。
import java.io.*;
public class FileStream {
    public static void main(String[] args) throws Exception{
        FileOutputStream out = new FileOutputStream("test.txt");
        out.write("www.cublog.com".getBytes());//读取字符串,write()不能直接读取字符串,所以只能转换成字节数
        out.close();//关闭输入文件对象
        
        byte[] buf = new byte[1024];
        File f = new File("test.txt");
        FileInputStream in = new FileInputStream(f);
        int len = in.read(buf);//取文件的长度
        System.out.println(new String(buf,0,len));
        in.close();
    }
}
Reader类和Writer类:
java中的字符是采用Unicode编码的,是双字节的。上面的FileInputStream和FileOutputStream都是用来处理字节的,在处理上面的字符串的时候需要把字符串转换成字节以后再写入到文件,在读取字符串的时候也是先读到的字节数组,然后再将它转换成为字符串的。这就需要编写额外的字节与字符之间转换的代码。java中专门有一个单独的类用来对IO设备进行字符的输入和输出,例如刚才的例子就可以用FileReader和FileWriter。
Reader类和Writer类专门用于文本文件的读取,而InputStream和OutputStream则是用于对二进制格式文件的内容读取
由于上面的例子是文本文件,所以可以用FileReader和FileWriter类来改写一下:
import java.io.*;
public class FileStream {
    public static void main(String[] args) throws Exception{
              
        FileWriter out = new FileWriter("test.txt");
        out.write("www.cublog.com");
        out.close();
        
        char[] buf = new char[1024];
        FileReader in = new FileReader("test.txt");
        int len = in.read(buf);
        System.out.println(new String(buf,0,len));
        in.close();
        
    }
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/36711/showart_488031.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP