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();
}
}
|
阅读(3787) | 评论(0) | 转发(0) |