Java上路17-I/O-字符与字节
2012-11-30 17:03
369 查看
一. System.in :
1. 键盘录入对象:
2. 使用缓冲区:
二. 字节输入输出流:
拷贝mp3文件示例:
三. 字符流转字节流:
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(); } }
相关文章推荐
- java中的字符,字节和编码
- java文件读取(按字符读+按字节读+缓冲读取)FileReader FileInputStream BufferedReader
- java 字符流与字节流
- java: InputStreamReader将字节的输入流变成字符的输入流,OutputStreamWriter将字符的输出流变成字节的输出流
- JAVA笔记11__File类/File类作业/字节输出流、输入流/字符输出流、输入流/文件复制/转换流
- java二进制,字节数组,字符,十六进制,BCD编码转换 ,GPS,GIS
- Java字节字符流转换
- Java IO学习3:字节-字符转换流
- 帮你理清Java中字符与字节的编码关系
- C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等
- Java io文件操作(按字符、字节、行、随机读取,追加,文件操作)
- Java基础,字节字符
- Java的字符串里的字符到底占几个字节?
- Java中的字节输入出流和字符输入输出流
- java截取字节和字符
- java基础扫盲--字节、字符、位
- java中字符与字节的编码关系
- java二进制,字节数组,字符,十六进制,BCD编码转换
- JAVA I/O中面向字节的InputStream和OutputStream以及面向字符的Reader和Writer简介
- java过滤四字节和六字节特殊字符