(三十七)、字符流与转换流

来源:互联网 发布:音乐喷泉软件下载 编辑:程序博客网 时间:2024/04/29 23:25

字符流

字符输入流

Reader

Demo:

public class ReaderDemo {    public static void main(String[] args) {        FileReader reader = null;        FileWriter writer = null;        try {            reader = new FileReader("c:/a.txt");            char[] buf = new char[16];            int len = -1;            while ((len = reader.read(buf)) != -1) {                System.out.print(new String(buf, 0, len));            }            writer = new FileWriter("c:/a.txt");            writer.write("你好");            writer.write(98);            writer.flush();            writer.write(new char[] { '啊', '你', '好' });            writer.flush();        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                reader.close();                writer.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

字符输出流

Write

public class CopyString {    public static void main(String[] args) {        File file = new File("src/com/yztcedu/day15_2/CopyString.java");        File desDir = new File("c:/");        copyFile(file, desDir);    }    private static void copyFile(File file, File desDir) {        FileReader reader = null;        FileWriter writer = null;        try {            reader = new FileReader(file);            writer = new FileWriter(new File(desDir, file.getName()));            char[] buf = new char[4096];            int len = -1;            while ((len = reader.read(buf)) != -1) {                String msg = new String(buf, 0, len);                msg = msg.replaceAll("\\d", "").toUpperCase();// 去掉数字转成大写                writer.write(msg);                writer.flush();            }        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                reader.close();                writer.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

转换流

InputStreamReader

InputStreamReader有两个主要的构造函数:

InputStreamReader(InputStream in)// 用默认字符集创建一个InputStreamReader对象InputStreamReader(InputStream in,String CharsetName)// 接受已指定字符集名的字符串,并用该字符集创建对象

Main.java

public class Main {    public static void main(String[] args) throws Exception {        FileInputStream fis = new FileInputStream("c:/a.txt");        InputStreamReader reader = new InputStreamReader(fis, "gbk");        BufferedReader br = new BufferedReader(reader);        String line = br.readLine();        System.out.println(line);        // 编码        byte[] bytes = line.getBytes("gbk");        // 解码        String string = new String(bytes, "utf-8");        System.out.println(string);    }}

OutputStreamWrite

OutputStreamWriter也有对应的两个主要的构造函数:

OutputStreamWriter(OutputStream in)// 用默认字符集创建一个OutputStreamWriter对象OutputStreamWriter(OutputStream in,String CharsetNarme)

Demo.java

 public class Demo {    public static void main(String[] args) throws IOException {        BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(                new FileOutputStream("c:/a.txt"), "utf-8"));        bfw.write("字符转字节");        bfw.flush();        bfw.close();    }}

从键盘读取数据,类似Scanner

public class SystemInDemo {    public static void main(String[] args) throws IOException {        BufferedReader reader = new BufferedReader(new InputStreamReader(                System.in, "utf-8"));        BufferedWriter writer = new BufferedWriter(new FileWriter(new File(                "c:/a.txt"), true));        String line = "";        System.out.println("请输入:");        while ((line = reader.readLine()) != null) {            if (line.equals("q")) {                break;            }            // 只写整型数字            if (line.matches("\\d+")) {                writer.write(line);                writer.newLine();                writer.flush();            } else {                System.out.println("请输入数字");            }        }        reader.close();        writer.close();    }}
0 0
原创粉丝点击