Java文件字符流/缓冲流/使用文件对话/动画和视频

文件字符流

因为文件字节输入流和输出流的read和write方法使用字节数组读写数据,即字节为基本单位处理数据,因此不能很好地处理unicode字符,例如一个汉字占两个字节
FileInputStream,FileOutputStream字节流相对应的是FileReader,FileWriter字符流,他们分别是Reader和Writer类的子类
构造方法

输入

  • FileReader(String filename)//
  • FileReader(File filename)//

常用方法

  • int read( )//返回一个整数(0~65535),如果未读取字符返回 -1
  • int read(char b [ ] )//如果到达源的末尾返回 -1
  • int read(char b[ ],int off, int len)//

输出

  • FileWriter(String filename)//
  • FileWriter(File filename)//

常用方法

  • int write(int n)//向文件写入一个字符
  • int write(char b [ ] )//如果到达源的末尾返回 -1
  • int write(char b[ ],int off, int len)//

最后记得关闭流

close()

加密的例子

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class Example12_6 {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\Administrator\\Desktop","abc.txt");//创建文件对象
        char c [] = "我是一名学生".toCharArray();   //将输入的信息存放到一个数组里
        try{
            FileWriter fileWriter = new FileWriter(file);  //刷新
            for (int i = 0; i < c.length ; i++) {
                c[i] = (char)(c[i]^'R');    //进行异或运算后再转为char类型
            }
            fileWriter.write(c);
            String s = new String(c);
            System.out.println("密文:" + s);
            fileWriter.close(); //关闭
        }
        catch (Exception e){

        }
        try {
            FileReader fileReader = new FileReader(file);
            while(fileReader.read(c) != -1 ){
                for (int i = 0; i < c.length ; i++) {
                    c[i] = (char)(c[i]^'R');
                }
            }
            String s = new String(c);
            System.out.println("原文:"+ s);
            fileReader.close(); //关闭
        }
        catch (Exception e){

        }
    }
}

运行结果

D:\HelloWorld\out\production\HelloJava Chapter_12.Part_3.Example12_6
密文:扃晽乒呟嬴畍
原文:我是一名学生

进程已结束,退出代码 0

缓冲流

BuffererdReader类和BufferedWriter类创建的对象成为缓冲输入流,缓冲输出流
简单来说缓冲流的出现是未了拥有更强的读写能力

缓冲输入流构造方法

  • BufferedReader(Reader in)//
FileReader inOne = new FileReader("abc.txt");
BufferedReader inTwo = new BufferedReader(inOne)

然后inTwo可以调用readline()方法,进行每行读取

String strline = inTwo.readline()//进行每行读取

缓冲输出流构造方法

  • BufferedWriter(Writer out)//
FileWriter outOne = new FileWiter(abc.txt)
BufferedWriter outTwo = new BufferedWriter(outOne)

然后outTwo可以调用newline()方法,进行输出回行

newline()//

BufferedReader和BufferedWriter称为上层流,字符流成为底层流

关闭的时候
输入时.先关低层流
输出流,先关上层流

换行输出的例子

import java.io.*;

public class Example12_7 {
    public static void main(String[] args) {
        String str[] = {"天气预报","北京多云","上海小雨","广州晴"};
        File file = new File("C:\\Users\\Administrator\\Desktop","abc.txt");
        try {
            FileWriter writer1 = new FileWriter(file);
            BufferedWriter writer2 = new BufferedWriter(writer1);   //缓冲输出
            for (String i : str) {   //遍历字符串数组
                writer2.write(i);
                writer2.newLine();  //缓冲特有的方法,输出换行符
            }
            writer2.close();    //先关上层流
            writer1.close();
            FileReader reader1 = new FileReader(file);  //对文件进行输入
            BufferedReader reader2 = new BufferedReader(reader1);
            String s = null;    //用于存放每一行的字符串
            while ((s = reader2.readLine()) != null) { //当每一有字符时就逐行进行输入,
                System.out.println(s);
            }
            reader1.close();    //先关底层流
            reader2.close();
        }
        catch (Exception e){

        }
    }
}

运行结果

D:\HelloWorld\out\production\HelloJava Chapter_12.Part_4.Example12_7
天气预报
北京多云
上海小雨
广州晴

使用文件对话框

结合输入输出流使用文件对话框打开和保存文件
留意字体设置和文档类型选择项

具体代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

public class myWindow extends JFrame implements ActionListener {
    JFileChooser fileDialog;
    JMenuBar jMenuBar;
    JMenu jMenu;
    JMenuItem jMenuSave,jMenuOpen;
    JTextArea jTextArea;
    BufferedReader in;
    FileReader fileReader;
    BufferedWriter out;
    FileWriter fileWriter;
    myWindow(){
        setTitle("文件对话框的实现");
        setBounds(300,300,500,500);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        init();
        validate();
    }
     void init(){
        jMenuBar = new JMenuBar();
        jMenu = new JMenu("菜单");
        jMenuSave = new JMenuItem("保存文件");
        jMenuSave.addActionListener(this);
        jMenuOpen = new JMenuItem("打开文件");
        jMenuOpen.addActionListener(this);
        jMenu.add(jMenuSave);
        jMenu.add(jMenuOpen);
        jMenuBar.add(jMenu);
        setJMenuBar(jMenuBar);
        jTextArea = new JTextArea();
        jTextArea.setFont(new Font("",Font.PLAIN,18));
        add(new JScrollPane(jTextArea), BorderLayout.CENTER);
        fileDialog = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("文档文件","txt");
        fileDialog.setFileFilter(filter);  //采用文件过滤
    }
    @Override
    public void actionPerformed(ActionEvent actionEvent) {
        if (actionEvent.getSource() == jMenuSave){
            try{
                if (fileDialog.showSaveDialog(this) == JFileChooser.APPROVE_OPTION){
                    File dir = fileDialog.getCurrentDirectory();    //获取当前路径
                    String name = fileDialog.getSelectedFile().getName();   //获取所选文件的名称
                    File file = new File(dir,name);
                    fileWriter = new FileWriter(file); //
                    out = new BufferedWriter(fileWriter);
                    out.write(jTextArea.getText());
                    out.close();
                    fileWriter.close();
                }
            }
            catch(Exception e){

            }
        }
        else if(actionEvent.getSource() == jMenuOpen){
            try{
                if (fileDialog.showOpenDialog(this) == JFileChooser.APPROVE_OPTION){
                    File dir = fileDialog.getCurrentDirectory();    //获取当前路径
                    String name = fileDialog.getSelectedFile().getName();   //获取所选文件的名称
                    File file = new File(dir,name);
                    fileReader = new FileReader(file);
                    in = new BufferedReader(fileReader);
                    String s = null;
                    while ((s =in.readLine())!= null){
                        jTextArea.append(s + "\n");
                    }
                    fileReader.close();
                    in.close();
                }
            }
            catch(Exception e){

            }
        }
    }
}
public class Example12_8 {
    public static void main(String[] args) {
        myWindow myWindow = new myWindow();
    }
}

动画和视频

  • 动画的基本概念
    1.实时动画//采用各种算法来实现运动物体的控制
    2.矢量动画//由矢量图衍生出的动画形式
    3.二维动画//
    4.三维动画//正面,侧面,反面

  • 模拟视频//一种传输图像和声音的连续的变动电信号

  • 数字信号//和动画一样,由一幅幅帧序列组成的
    1.数字视频标准//
    2.视频压缩编码//

  • 视频文件格式
    1.Quicktime//Apple公式开发的一种音频,视频文件格式
    2.AVI
    3.MPEG//运动图象专家组(Moving Picture Experts Group)
    4.RM
    5.ASF
    6.GIF文件//可交换的图像文件(Graphic Interchange Format)
    7.Flic文件//

CET4P174

cord
vessel
scholar
regulation
finally
vertical
costly
evident
approval
glimpse
powder
apologize
judgement
veteran

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值