JAVA流操作(1)数据流

<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


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值