基础的小知识:
InputStream OutputStream 字节流的基类(抽象类)
FileInputStream节点流(点对点的意思,例如:FileInputStream fis = new FileInputStream("data.txt");)
FileOutputStream(例如:FileOutputStream fos = new FileOutputStream("result.txt");)
Reader Writer字符流的基类
File帮助输入输出更轻松(类似支撑类)
RandomAccess特点:随机性
一、DataInputStream和DataOutputStream
例子:张三 1元 ,李四 2元 王五 5.5元
如果用InputStream的话要把这些数据读出文件中时,要把张三,李四,王五(字符串);1,2(整型);5.5(浮点型)全部转换成字节存入其中。但是写入的时候将会很复杂,要分清哪些字节是字符串,哪些是整型,哪些是浮点型,然后做相应的转换,然后存入数据。
这个例子用DataOutputStream和DataInputStream来做:
String name[] = {"Tom","Jack","Mary"};
double salary[] = {250,265.7,300.6};
FileOutputStream fos = new FileOutputStream("res/salary");
DataOutputStream dos = new DataOutputStream(fos);
for(int i=0;i<name.length;i++){
dos.writeUTF(name[i]);
dos.writeDouble(salary[i]);
}
fos.close();
dos.close();
//===================================
FileInputStream fis = new FileInputStream("res/salary");
DataInputStream dis = new DataInputStream(fis);
for (int i=0;i<name.length;i++){
System.out.println(dis.readUTF()+" : "+dis.readDouble());
}
fis.close();
dis.close();
二、字节缓冲流
BufferedInputStream和BufferedOutputStream的简单运用
FileOutputStream fos = new FileOutputStream("res/new.txt");//最底层的字节流
BufferedOutputStream bos = new BufferedOutputStream(fos);//封装,缓存输出流
DataOutputStream dos = new DataOutputStream(bos);//数据输出流
dos.writeUTF("good morning!");
dos.writeInt(250);
dos.flush();//强制性的发送到文件中去
dos.close();
bos.close();
fos.close();
FileInputStream fis = new FileInputStream("res/new.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
System.out.println(dis.readUTF() + "\n"+ dis.readInt());
dis.close();
bis.close();
fis.close();
注意:1、在这个小程序中dos.close();bos.close();fos.close();不能写反了{fos.close();bos.close();dos.close();这种是错误的}
2、如果数据不能够流动,可以用dos.flush();来强制性的让它流动。
3、File
Source.txt
Backup/source.txt
执行备份:
判断备份目录是否存在,
如无:
1、 建立目录backup
2、 将源文件复制到backup
如有:
判断是否需要备份
如有必要:
将源文件复制到backup
今天有些小感想,首先对于今天的留下的作业,就是做一个java记事本并且实现保存的功能,记事本做好了,但是这个保存的功能却总也实现不了,心里有一个大概的思路,可是对于知识的认识和运用总是有些欠缺,再加上对于今天老师讲的内容的不理解造成了这般结果,或许是我缺少人们常说的一种天赋,有些人生下来就是做程序员的料,也许我就是不适合的那一批中的。不过还是有些收获的,在网上查了查资料,东拼西凑,再加上自己的那点理解,终于还是完成了这个项目:
public class JiShiTxt implements ActionListener{
Frame f;
MenuBar menubar = new MenuBar();
Menu wenjian;
MenuItem baocun;
TextArea wenben = new TextArea();
FileDialog fd;//创建一个文件对话框,用于加载文件
File file1 = null;//创建一个实例
public JiShiTxt(){
f = new Frame("data");
wenjian = new Menu("文件");
baocun = new MenuItem("保存");
baocun.addActionListener(this);
f.setMenuBar(menubar);
menubar.add(wenjian);
wenjian.add(baocun);
f.add(wenben);
f.setSize(600, 480);
f.setLocation(200, 200);
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
new JiShiTxt();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == baocun) {
fd = new FileDialog(f, "Save", FileDialog.SAVE);
fd.setVisible(true);
file1 = new File(fd.getDirectory(), fd.getFile());
save(file1);
}
}
public void save(File file1){
try {
FileWriter fw = new FileWriter(file1);
fw.write(wenben.getText());
fw.close();
} catch (Exception e) {
}
}
}
在这段代码中,有我理解的,也有我不理解的,通过查资料我解释了某些代码的意思。虽然收获很少,但是我自己清楚,我尽力了,尽管没有达到预期的结果,我会继续攻克它。