- <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">//例程1:</span>
- package dataInputStreamAndPrintStreamDemo;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.io.PrintStream;
- //示范如何自键盘读入字符串,并使用DataInputStream,PrintStream类将程序执行显示在屏幕(标准输出)上
- public
class DataInputStreamAndPrintStreamDemo { - public
static
void main(String[] args) { - int count;
- byte input[] = new
byte[256]; - String InputString;
- // 键盘读入
- DataInputStream stdin = new DataInputStream(System.in);
- //提高执行效率,几乎所有的InputStream类都可以被BufferedStream类包覆(wrap)来提高I/O效率
- BufferedInputStream bufin = new BufferedInputStream(stdin);
- // 屏幕输出
- DataOutputStream stdout = new DataOutputStream(System.out);// 将结果输出至屏幕
- BufferedOutputStream bufout = new BufferedOutputStream(stdout);// 提高输出效率
- PrintStream p = new PrintStream(System.out);// 将结果输出至屏幕
- try {
- if (bufin.markSupported()) {
- p.println("支持串流标记:是");// 使用PrintStream输出
- p.println("输入字符串,结束请按【Enter】...\n" + "=>");
- //使得流在第一个位被作上标记(mark),并且会保留256位(mark(256))
- bufin.mark(256);
- //读取字节并存放在指定的数组中
- count = bufin.read(input);
- p.println("读入字符数:" + count);
- p.print("你输入的字符串为:");
- // 写入流,只是将数据写入流中而已,并不输出数据
- // 所以在其后必须使用flush()函数将流中的数据强制输出
- bufout.write(input, 0, count);
- bufout.flush();// 强制输出至指定的输出装置
- bufin.reset();// 将读取位置移至标记处,也就是流中的第一位
- bufin.read(input, 0, count);
- p.print("字符串的前半段:");
- bufout.write(input, 0, count / 2);
- //相当于System.out.println();
- bufout.write((int)('\n'));
- bufout.flush();
- bufin.reset();
- bufin.skip(count / 2);
- bufin.read(input, 0, count / 2);
- p.print("字符串的后半段:");
- bufout.write(input, 0, count / 2);
- bufout.flush();
- } else {
- System.out.println("字符串流标记:否");
- }
- // 关闭流
- p.close();
- stdin.close();
- bufin.close();
- stdout.close();
- bufout.close();
- } catch (IOException E) {
- System.out.println("发生I/O错误!!!");
- }
- }
- }
- //其实我们对PrintStream类应该很熟悉才对,System.out就是一个PrintStream类对象,其提供的print()和println()函数
- //几乎可显示所有数据类型的变量
- //例程2:package iotest;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.PrintStream;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- public
class IOtest {
- public
static
void main(String[] args) throws IOException {
- byte buf[] = new
byte[255]; - byte bufin[] = new
byte[255]; //只能用byte格式将数据送入文件
- String str = "输入的文字:";
- buf = str.getBytes();
- try {
- FileOutputStream fout = new FileOutputStream("test.txt");
- PrintStream p = new PrintStream(fout);
- p.println("输入的文字~~~~~~~"+'\n'); //方式一
- fout.write(buf, 0, buf.length); //方式二
- fout.write(buf); //方式三
- //fout.flush();
- //fout.close();
- System.out.println("快输入文字:");
- int bytes = System.in.read(bufin, 0, 255);
- //追加文本!!!!!!!!!!!!!!!!
- //fout = new FileOutputStream("test.txt",true);
- fout.write(bufin, 0, bytes);
- } catch (FileNotFoundException ex) {
- Logger.getLogger(IOtest.class.getName()).log(Level.SEVERE, null, ex);
- }
- }
- }
- //结果:
- //输入的文字~~~~~~~
- //输入的文字:输入的文字:鍩庡競宸ヤ笟 fdsfdssssssssssssssssssssssssssss
|