Java面向对象 IO (二)
来源:互联网 发布:凸包算法 matlab 编辑:程序博客网 时间:2024/06/11 19:32
Java面向对象 IO (二)
知识概要:
(1)字节流概述
(2)字节流复制图片
(3)IO流(读取键盘录入)
(4)读取转换流,写入转换流
字节流概述
基本操作与字符流类相同
但它不仅可以操作字符,还可以操作其他媒体文件
例如
• Copy一个Jpg文件。
字节流:
InputStream OutputStream
需求,想要操作图片数据。这时就要用到字节流。复制一个图片.
import java.io.*;class FileStream{public static void main(String[] args) throws IOException{readFile_3();}public static void readFile_3()throws IOException{FileInputStream fis = new FileInputStream("fos.txt");//int num = fis.available();byte[] buf = new byte[fis.available()];//定义一个刚刚好的缓冲区。不用在循环了。fis.read(buf);System.out.println(new String(buf));fis.close();}public static void readFile_2()throws IOException{FileInputStream fis = new FileInputStream("fos.txt");byte[] buf = new byte[1024];int len = 0;while((len=fis.read(buf))!=-1){System.out.println(new String(buf,0,len));}fis.close();}public static void readFile_1()throws IOException{FileInputStream fis = new FileInputStream("fos.txt");int ch = 0;while((ch=fis.read())!=-1){System.out.println((char)ch);}fis.close();}public static void writeFile()throws IOException{FileOutputStream fos = new FileOutputStream("fos.txt");<span style="color:#ff0000;">fos.write("abcde".getBytes());</span>fos.close();}}
复制一个图片
思路:
1,用字节读取流对象和图片关联。
2,用字节写入流对象创建一个图片文件。用于存储获取到的图片数据。
3,通过循环读写,完成数据的存储。
4,关闭资源。
import java.io.*;class CopyPic{public static void main(String[] args) {FileOutputStream fos = null;FileInputStream fis = null;try{fos = new FileOutputStream("c:\\2.bmp");fis = new FileInputStream("c:\\1.bmp");byte[] buf = new byte[1024];int len = 0;while((len=fis.read(buf))!=-1){fos.write(buf,0,len);}}catch (IOException e){throw new RuntimeException("复制文件失败");}finally{try{if(fis!=null)fis.close();}catch (IOException e){throw new RuntimeException("读取关闭失败");}try{if(fos!=null)fos.close();}catch (IOException e){throw new RuntimeException("写入关闭失败");}}}}IO流(读取键盘录入)
*读取键盘录入。System.out:对应的是标准输出设备,控制台。System.in:对应的标准输入设备:键盘。需求:通过键盘录入数据。当录入一行数据后,就将该行数据进行打印。如果录入的数据是over,那么停止录入。*/import java.io.*;class ReadIn{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());}elsesb.append((char)ch);}}}
读取转换流,写入转换流
InputStreamReader,OutputStreamWriter
转换流的由来
• 字符流与字节流之间的桥梁
• 方便了字符流与字节流之间的操作
转换流的应用
• 字节流中的数据都是字符时,转成字符流操作更高效。
例程:标准输入输出。
能不能直接使用readLine方法来完成键盘录入的一行数据的读取呢?
readLine方法是字符流BufferedReader类中的方法。
键盘录入的read方法是字节流InputStream的方法。
那么能不能将字节流转成字符流在使用字符流缓冲去的readLine方法呢?
代码演示
import java.io.*;class TransStreamDemo{public static void main(String[] args) throws IOException{//获取键盘录入对象。//InputStream in = System.in;//将字节流对象转成字符流对象,使用转换流。InputStreamReader//InputStreamReader isr = new InputStreamReader(in);//为了提高效率,将字符串进行缓冲区技术高效操作。使用BufferedReader//BufferedReader bufr = new BufferedReader(isr);//键盘的最常见写法。BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//OutputStream out = System.out;//OutputStreamWriter osw = new OutputStreamWriter(out);//BufferedWriter bufw = new BufferedWriter(osw);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面向对象 IO (二)
- java面向对象(二)
- java面向对象(二)
- Java 面向对象(二)
- java-面向对象(二)
- Java面向对象(二)
- Java面向对象(二)
- Java面向对象(二)
- java面向对象(二)
- Java面向对象(二)
- Java面向对象(二)
- Java面向对象(二)
- Java面向对象 IO (一)
- Java面向对象 IO (三)
- Java面向对象 IO (四)
- Java面向对象(二)
- java面向对象(二)
- Java面向对象(二)
- 网站社会化评论插件推荐之“畅言”
- 黑马程序员 Java基础_1 Java介绍、jdk安装与环境变量配置
- centos修改JAVA_HOME
- IOS_Quartz2D_水印缩略图_PDF_setNeedsDisplay方法内部自动调用drawRect
- Java面向对象 IO (一)
- Java面向对象 IO (二)
- 将网站搬迁到sae中的总结
- Java面向对象 IO (三)
- 360 CTF Writeup
- Java面向对象 IO (四)
- oracle通过DBLink访问远程数据库的LOB字段报ORA-22992的解决方法
- NSNotificationCenter消息中心
- 整理知乎上的一些指点前路的东西(计算机系可以看看,别把四年浪费了)
- Oracle中的游标(光标)