1、文件字节流
由于应用程序经常需要和文件打交道,所以InputStream专门提供了读写文件的子类:FileInputStream和FileOutputSream类。如果程序对文件的操作比较简单,比如只是顺序地读写文件,那么就可以使用FileInputStream和FileOutputSream类创建的流对文件进行读写操作。
2、文件字节输入流
1).创建文件字节输入流
FileInputStream类创建的对象被称作文件字节输入流。
◆构造方法:
FileInputStream(String name);
FileInputStream(File file);
◆读取一个名为hello.txt的文件,建立一个文件输入流对象,如下所示:
try { FileInputStream in = new FileInputStream("hello.txt");
}
catch (IOException e) {
System.out.println("File read error:"+e );
}
2).read方法以字节为单位读文件
int read();
int read(byte b[]);
int read(byte b[],int off,int len);
3、文件字节输出流
1).创建文件字节输出流
FileOutputStream类创建的对象被称作文件字节输出流。
构造方法:
FileOutputStream(String name)
FileOutputStream(File file)
2).以字节为单位写文件
FileOutputStream流的目的地是文件,所以文件输出流调用write(byte b[ ])方法把字节写入到文件。
4、示例代码
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo36 {
public static void main(String[] args) {
File file = new File("C:\\Users\\blue\\Desktop\\test\\a.txt");
File file2 = new File("C:\\Users\\blue\\Desktop\\test\\c.txt");
byte[] b = new byte[100];
String txt = "我是中国人";
byte[] b2 = txt.getBytes();
int count = 0;
try {
FileInputStream is = new FileInputStream(file);
while((count = is.read(b)) != -1){
String string = new String(b, 0, count);
System.out.println(string);
}
is.close();
FileOutputStream os = new FileOutputStream(file2);
os.write(b2);
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
5、文件字符流
字节输入流和输出流的read和write方法使用字节数组读写数据,即以字节为基本单位处理数据。因此,字节不能很好的操作Unicode字符,例如,一个汉字在文件中占用了2个字节,如果使用字节流,读取不当就可能会出现“乱码”现象。
1).FileReader和FileWriter用来创建文件字符输入、输出流,
构造方法:
FileReader(String filename);
FileReader(File filename);
FileWriter (String filename);
FileWriter (File filename);
2).字符输入流和输出流的read()和write()方法以字符为基本单位处理数据。
6、示例代码
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo37 {
public static void main(String[] args) {
String content = "hello我是中国人";
File file = new File("C:\\Users\\blue\\Desktop\\test\\c.txt");
char[] c = content.toCharArray();
try {
FileWriter fw = new FileWriter(file);
fw.write(c);
fw.close();
FileReader fr = new FileReader(file);
char[] c2 = new char[100];
int count = 0;
while ((count = fr.read(c2)) != -1) {
String string = new String(c2, 0, count);
System.out.println(string);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}