JAVA输入输出流
一、实验目的
利用文件字节流和文件字符流的构造方法创建对象,通过read和write方法对数据进行读取和写入,对实验中出现的问题进行分析,确定调试步骤和测试方法,直至文件读写操作成功。
二、实验步骤
1)编写应用程序,创建文件对象
2)通过文件字节输入流和输出流,完成文件内容的读取和写入操作
3)通过文件字符输入流和输出流,完成文件内容的写入和读取操作
4)实现上述功能
二级标题
三级标题
四级标题
五级标题
六级标题
三、使用步骤
1.实现代码
Mainclass.java
import java.io.*;
public class Mainclass {
public static void main(String[] args) {
// TODO 自动生成的方法存根
File f1 = new File("D:\\shiyan","hello.txt"); //创建文件对象f1
File f2 = new File("D:\\shiyan","nice.txt"); //创建文件对象f2
if(!f1.exists()) {
try{
f1.createNewFile();
System.out.println("f1创建成功!");
}
catch(IOException ep) {}
}
if(!f2.exists()) {
try {
f2.createNewFile();
System.out.println("f2创建成功!");
}
catch(IOException ep) {}
}
//使用文件字节输出流写文件
byte[]a = "最锋利的剑的刀锋也无法与一颗和平的心的宁静相匹敌。".getBytes();
byte[]b = "——沧浪剑圣".getBytes();
try {
FileOutputStream out = new FileOutputStream(f1);
out.write(a);
out.write(b, 0, b.length);
out.close();
}
catch(IOException e) {
System.out.println("Error"+e);
}
//使用文件字节输出流读文件
int n=-1;
byte []m = new byte[100];
try {
FileInputStream in = new FileInputStream(f1);
while((n=in.read(m,0,100))!=-1) {
String s = new String(m,0,n);
System.out.print(s);
}
in.close();
}
catch(IOException e) {
System.out.println("File read Error"+e);
}
System.out.println();
String c = "敌人虽众,一击斩之! ——沧浪剑圣";
try {
char []k=c.toCharArray();
FileWriter out = new FileWriter(f2);//通过文件字符流写入数据
out.write(k,0,k.length);
out.close();
FileReader in = new FileReader(f2);//通过文件字符流读出数据
StringBuffer s = new StringBuffer();
char tom[]=new char[30];
while((n=in.read(tom,0,20))!=-1) {
String temp = new String (tom,0,n);
s.append(temp);
}
in.close();
System.out.println((new String(s)));
}
catch(IOException e) {
System.out.println(e.toString());
}
}
}
2.测试
创建文件对象f1,f2,同时如果文件不存在,程序自动创建,结果如图:
总结
提示:这里对文章进行总结:
1)在利用字符输入流写入数据时,没有关闭文件,导致写入的文件为空:通过 out.close();及时关闭文件来解决
2)写文件时直接使用文件路径导致错误:通过文件对象作为写入时的构造参数:FileWriter out = new FileWriter(f2)来解决办法。