字节流(No.2)

基础的小知识:

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) {

}

}

}

在这段代码中,有我理解的,也有我不理解的,通过查资料我解释了某些代码的意思。虽然收获很少,但是我自己清楚,我尽力了,尽管没有达到预期的结果,我会继续攻克它。

你可能感兴趣的:(字节流)