Java:字节流读写文件
针对文件的读写,JDK专门提供了两个类,分别是 FileInputStream 和 FileOutputStream ,它们都是InputStream 的子类。
- Example01:以字节流形式读取文件中的数据
- Example02:将数据以字节流形式写入文件(覆盖文件内容)
- Example03:将数据以字节流形式写入文件(追加文件内容)
1.FileInputStream 是操作文件的字节输入流,专门用于读取文件中的数据。
public class Example01 {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("Example1.txt");
int b = 0;
while(true) {
b = in.read();
if(b == -1) {
break;
}
System.out.println(b);
}
in.close();
}
}
注意:首先要确保文件 Example1.txt 存在并且可读,否则会抛出文件找不到的异常 FileNotFoundException
2.FileOutputStream 是操作文件的字节输出流,专门用于把数据写入文件。
public class Example02 {
public static void main(String[] args) throws IOException {
//创建一个文件字节输出流
FileOutputStream out = new FileOutputStream("Example2.txt");
String str = "****写入数据****";
byte[] b = str.getBytes();
for(int i=0; i<b.length; i++) {
out.write(b[i]);
}
out.close();
}
}
注意:程序运行后,会自动生成一个新的文本文件 Example2.txt 。如果 Example2.txt 已经存在数据,那么该文件中的数据会先被清空,再写入新的数据。
3.FileOutputStream 的构造函数 FileOutputStream(String fileName,boolean append) ,用于把数据追加写入文件。
public class Example03 {
public static void main(String[] args) throws IOException {
FileOutputStream out = new FileOutputStream("Example2.txt", true);
String str = "----追加数据----";
byte[] b = str.getBytes();
for(int i=0; i<b.length; i++) {
out.write(b[i]);
}
out.close();
}
}
注意:程序通过字节输出流对象向文件 Example2.txt 追加了数据。
由于IO流在进行数据读写操作时会出现异常,如果一旦遇到异常,IO流的 close() 方法将无法得到执行,流对象所占有的系统资源将得不到释放,因此,为了保证IO流的 close() 方法必须执行,通常将关闭流的操作写在 finally 代码块中。
finally{
try{
if(in != null)
in.close();
}catch(Exception e){
e.printStackTrace();
}
try{
if(out != null)
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
希望能够帮助到大家! Java:字节数组和字符串的相互转化