您的位置:首页 > 编程语言 > Java开发

Java上路17-I/O-字符与字节

2012-11-30 17:03 369 查看
一. System.in :

1. 键盘录入对象:

import java.io.*;

class InAndOut
{
public static void main(String[] args) throws IOException
{
//获取键盘录入对象
InputStream in=System.in;
StringBuilder sb=new StringBuilder();

while(true)
{
int ch=in.read();
if(ch=='\r')
continue;
if(ch=='\n')
{
String s=sb.toString();
if("over".equals(s))
break;
System.out.println(s.toUpperCase());
sb.delete(0,sb.length());
}
else
sb.append((char)ch);
}
}
}



2. 使用缓冲区:

import java.io.*;

class InAndOut
{
public static void main(String[] args) throws IOException
{
//获取键盘录入对象
InputStream in=System.in;
//将字节流对象转成字符流对象,使用转换流
InputStreamReader isr=new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲区技术
BufferedReaderbu fr=new BufferedReader(isr);

String line=null;

while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
System.out.println(line.toUpperCase());
}
bufr.close();
}
}



二. 字节输入输出流:

       拷贝mp3文件示例:

import java.io.*;

class MyBufferedInputStream
{
private InputStream in;

private byte[] buf=new byte[1024*4];
private int pos=0, count=0;

MyBufferedInputStream(InputStream in)
{
this.in=in;
}

//每次读取一个字节
public int myRead() throws IOException
{
if(count==0)
{
//通过in对象读取硬盘上的数据存储在buf
count= in.read(buf);

if(count<0)
return -1;

pos=0;
byteb=buf[pos];

count--;
pos++;
return b&255;      //类型提升,避免-1出现
}
else if(count>0)
{
byteb=buf[pos];

count--;
pos++;
return b&255;
}
return -1;
}

publicvoid myClose() throws IOException
{
in.close();
}
}

class IoDemo
{
public static void main (String [] args) throws IOException
{
//使用自己的字节输入流
MyBufferedInputStream bufis=new MyBufferedInputStream(new FileInputStream("E:/demo.mp3"));
BufferedOutputStream bufos=new BufferedOutputStream(new FileOutputStream("E:/newdemo.mp3"));

int by=0;
while((by=bufis.myRead())!=-1)
{
bufos.write(by);
}
bufos.close();
bufis.myClose();
}
}


三. 字符流转字节流:

import java.io.*;

class InAndOut
{
public static void main(String[] args) throws IOException
{
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));

String line=null;
while((line=bufr.readLine())!=null)
{
if("over".equals(line))
break;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息