黑马程序员 ---IO输入输出(一)
来源:互联网 发布:js同源策略是什么意思 编辑:程序博客网 时间:2024/06/04 18:27
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
概述:
IO流用来处理设备之间的数据传输;
Java对数据的操作是通过流的方式;
Java用于操作流的对象都在IO包中;流按操作数据分为两种:字节流与字符流;
流按流向分为:输入流,输出流;
字节流的抽象基类:InputStream ,OutputStream。
字符流的抽象基类: Reader ,Writer。
创建对象并写入数据:
import java.io.*;class FileWriterDemo{public static void main(String[] args) throws IOException{//创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。//而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。//其实该步就是在明确数据要存放的目的地。FileWriter fw = new FileWriter("demo.txt");//调用write方法,将字符串写入到流中。fw.write("abcde");//刷新流对象中的缓冲中的数据。//将数据刷到目的地中。//fw.flush();//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。//将数据刷到目的地中。//和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。fw.close();}}
import java.io.*;class FileWriterDemo{public static void main(String[] args) {FileWriter fw =null;try{fw = new FileWriter("Demo.txt");fw.write("abcdef");fw.flush();}catch (IOException e){System.out.println(e.toString());}finally {try{if (fw!==null)fw.close();}catch (IOException e){System.out.println(e.toString());}}}}
传递一个true参数,代表不覆盖已有的文件。并在已有文件的末尾处进行数据续写。
FileWriter fw = new FileWriter("demo.txt",true);
两种方法读取文件:
import java.io.*;import java.util.*;class FileReaderDemo {public static void main(String[] args) throws IOException{FileReader fr = new FileReader("Demo.txt");int a = 0;while ((a=fr.read())!=-1){System.out.println((char)a);}/*char[] buf = new char[1024];int a=0;while ((a=fr.read(buf))!=-1){System.out.println(a+"..."+new String(buf,0,a));}*/fr.close();}}
字符流的缓冲区
缓冲区的出现提高了对数据的读写效率。
对应类
BufferedWriter
BufferedReader
缓冲区要结合流才可以使用。
在流的基础上对流的功能进行了增强。
/*通过缓冲区复制一个.java文件。*/import java.io.*;class CopyTextByBuf{public static void main(String[] args) {BufferedReader bufr = null;BufferedWriter bufw = null;try{bufr = new BufferedReader(new FileReader("BufferedWriterDemo.java"));bufw = new BufferedWriter(new FileWriter("bufWriter_Copy.txt"));String line = null;while((line=bufr.readLine())!=null){bufw.write(line);bufw.newLine();bufw.flush();}}catch (IOException e){throw new RuntimeException("读写失败");}finally{try{if(bufr!=null)bufr.close();}catch (IOException e){throw new RuntimeException("读取关闭失败");}try{if(bufw!=null)bufw.close();}catch (IOException e){throw new RuntimeException("写入关闭失败");}}}}
模拟一个BufferedReader
import java.io.*;class MyBufferedReader{private FileReader r;MyBufferedReader(FileReader r){this.r = r;}public String myReadLine() throws IOException{StringBuilder sb = new StringBuilder();int a = 0;while ((a=r.read())!=-1){if (a=='\r')continue;if (a=='\n')return sb.toString();elsesb.append((char)a);}if (sb.length()!=0) return sb.toString();return null;}public void myClose() throws IOException{r.close();}}class MyBufferedTest{public static void main(String[] args) throws IOException{FileReader fr = new FileReader("buf.txt");MyBufferedReader bufr = new MyBufferedReader(fr);String line = null; while ((line=bufr.myReadLine())!=null) { System.out.println(line); } bufr.myClose();}}
19-11 字节流读写数据
import java.io.*;class FileStream {public static void main(String[] args) throws IOException {//outputStream();inputStream();}public static void outputStream() throws IOException //字节流写入数据{FileOutputStream fps = new FileOutputStream("file.txt");fps.write("abcdefg".getBytes());fps.close();}public static void inputStream() throws IOException//字节流读取数据{FileInputStream fis = new FileInputStream("file.txt");byte[] b = new byte[fis.available()]; fis.read(b);System.out.println(new String(b));}}
读取转换流
//获取键盘录入对象。
//InputStream in = System.in;
//将字节流对象转成字符流对象,使用转换流。InputStreamReader
//InputStreamReader isr = new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲区技术高效操作。使用BufferedReader
//BufferedReader bufr = new BufferedReader(isr);
//键盘的最常见写法。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
需求:
通过键盘录入数据。
当录入一行数据后,就将该行数据进行打印。
如果录入的数据是over,那么停止录入。
import java.io.*;class TransStreamDemo{public static void main(String[] args) throws IOException {InputStream in= System.in;InputStreamReader isr = new InputStreamReader(in);BufferedReader buf = new BufferedReader(isr);String line = null;while ((line = buf.readLine())!=null){if ("over".equals(line))break;System.out.println(line);}buf.close();}}
写入转换流
import java.io.*;class TransStreamDemo{public static void main(String[] args) throws IOException {InputStream in = System.in;InputStreamReader isr = new InputStreamReader(in);BufferedReader bufr = new BufferedReader(isr);//BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));OutputStream ost =System.out;OutputStreamWriter osw = new OutputStreamWriter(ost);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);bufw.newLine();bufw.flush();}bufr.close();}}
- 黑马程序员 ---IO输入输出(一)
- 黑马程序员——JAVA IO输入输出(一)
- 黑马程序员——JAVA IO输入输出(一)
- 黑马程序员---IO(输入输出)
- 黑马程序员 ---IO输入输出(二)
- 黑马程序员_输入输出流(IO)
- 【黑马程序员】第八章:IO(输入输出)
- 黑马程序员 IO/输入输出流
- 黑马程序员-IO流/输入输出
- 黑马程序员-IO(一)
- (黑马程序员)学习笔记,IO输入输出(字符流)
- (黑马程序员)学习笔记,IO输入输出(字节流)
- 黑马程序员--Java之IO(输入输出)(下)04
- 黑马程序员--Java之IO(输入输出)(上)03
- 黑马程序员——JAVA IO输入输出(三)
- 黑马程序员——JAVA IO输入输出(二)
- 黑马程序员——JAVA IO输入输出(二)
- 黑马程序员——Java基础---IO(输入输出)(上)
- 几种常用排序小结
- 指针与引用
- UVa 10656 Maximum Sum (II) (water ver.)
- Servlet 3.0中的异步处理
- 自动刷新的方法
- 黑马程序员 ---IO输入输出(一)
- 将文档中className有“red”的标签背景色设为红色(百度2014校招前端笔试题)
- 找工作技巧
- 腾讯2013校招技术类笔试题
- 如何驱动一款USB设备
- BitMap的java实现
- spoj AMR11 Robbing Gringotts 双边暴力+hash+费用流
- EPP编写代码浏览器无法打开问题
- 线程同步之临界区(类比互斥对象进行分析)