开始学习java3 输入输出流

inputStrem outPutStem 结尾的流类 一次检查1个字节。

read wridt 结尾的流类 一次检查2个字节 即一个字符。


流在输入输出结束之后 利用close() 的方法结束流的传输。

System.exit(-1)退出程序。

public class Hello {
	
	public static void main(String[] args)
	{
			int b = 0;
			FileInputStream a  = null;
			FileOutputStream c = null;
			try{
				
				a = new FileInputStream("D://Hello.class");
				c = new FileOutputStream("D://HelloEveryOne1.java");
				
				while((b = a.read()) != -1){

					c.write(b);
					
				}
				a.close();
				c.close();
				
			}catch(FileNotFoundException eo){
				
				System.out.print("找不到!");
				System.exit(-1);
			}
			catch(IOException eo){
				
				System.out.print("文件读取错误");
			}
			
			System.out.print("文件复制成功");
		
	}
}


FileInputStream 与 FileOutpubStrem 的用法,利用每次读取一个字节然后将字节写入文件中,结束之后close完成复制过程。


FileReader  FileWriter 的用法,类似,不过每次读取2个字节,可以完成中文的输出,不过利用自定义的txt要完成utf-8的编码格式才可以正确的显示。


这些所谓的流类可以理解为一条管道,链接到指定文件的管道,然后利用这个管道向外或者向内传输数据。

如果直接是程序与文件一条管道直接连接,称之为字节流。如果在管道上在套上其他的过滤管道,这些过滤管道称为处理流。


BufferedInputSteam mark(标记某个节点,以后从这个节点开始) reset(重新从标记的节点开始)

 Buffered的相应的处理流的构造函数的参数依托于对应的inputStrem,outStream,reader,writer的相应的流类。
然后Buffered就有相应多的方法来操作这些流数据。

BufferedReader newLine() 写入时候的换行  readLine() 读的时候的整读一行字符。


InputStreamReader outPutStreamWriter 处理流的类用来转换,字节处理转为字符处理。


ByteArrayInputStream 字符数组流  ByteOutputStream input 和output是以程序为参考系来作为对象的


在定义ByteArrayInputStream时候,即是input到外面,即是写入的环节,这个时候当new的时候,会在内存里面申请
一块空间,然后形象的有一条管道负责输入不同的字节进去,这时如果需要输入不同的数据类型,利用dataInputStream
套在管道的外面,形成第二管道,扩大填充的范围,这样就可以根据writeLong writeBoolean等格式的写入方法满足要
求。
接着要从那块内存里面读取数据,即要弄另外一条输出管道,这里利用byteArrayOutputStream(.toByteArray)之前的
节点流数据读取byte数组进入到这里,才知道读出的内容范围。然后再需要再套个管道 dataOutputStream读取各式的
数据类型,这里根据我们之前填充的顺序,先写先读,通过不同的read方法。






flush 清除小桶里面缓存的东西




print 与 println 的区别 后者是输出之后换行 不会抛出异常




printStream 输入流 将System.out.print() 转移输出的目的地 利用 Syste.setOut(printStream类型);
再利用两条管道的套用,FileoutputStream将sysetm.out.print()的print东西输出到我们创的文件中。


PrintStream ps = null;
		
		try{
			
			FileOutputStream a = new FileOutputStream("D://20150213.txt");
			ps = new PrintStream(a);
		}catch(IOException eo){
			
			System.out.print("输入错误");
		}
		
		if(ps != null){
			
			System.setOut(ps); //将out出来的路径转化
		}
		int ln = 0;
			for(byte c = 0 ; c < 50000; c++){
				
				System.out.print(c + "  ");
				if(ln++ >= 100){
					System.out.println();
					ln = 0;
				}
			}
//		System.setOut(null);	
		System.out.print("输入成功");
		
		
			


String s = null;
		BufferedReader br  = new BufferedReader(new InputStreamReader(System.in)); //借助BufferedReader可以调用它的readLine()方法 利用 System.in 
		<span style="white-space:pre">									</span>   获取面板输入的东西,它就是一个小桶暂存区。																</span>                    
		try{
			
			FileWriter fw = new FileWriter("d://20150214.txt"); //新建一txt文档
			PrintWriter log =  new PrintWriter(fw);   //输入方式改变,由面板输入
			while((s = br.readLine()) != null){
				if(s.equalsIgnoreCase("exit"))
					break;
				
					
				System.out.println(s);
				System.out.println("--------------------");
				log.println(s);
				log.flush();
				
			}
			log.println("===" + new Date() + "===");//打印当前的时间
			log.flush();
			log.close();
		}catch(IOException eo){
			
			
		}



printStream 输入流 将System.out.print() 转移输出的目的地 利用 Syste.setOut(printStream类型);
再利用两条管道的套用,FileoutputStream将sysetm.out.print()的print东西输出到我们创的文件中。




serializable 接口 不需要重写方法 仅标明可以序列化
ObjectOutStream 结合 FileOutputStream的方法,先定义一个文件,接通第一条管道到文件那里,然后再利用
ObjectOutStream 通过 writeObject()的方法,把我们需要传输的类写进去。


调用的时候通过FileInputStream()先读到某个文件,即相当于先接通条管道,再利用ObjectInputStream利用
readObejct() 再通过类型的强转,获得我们需要的类。需要serializable可以序列化。

	Num testNum  = new Num();
			testNum.a = 2015;
			testNum.b = 2;
			testNum.c = 13;
			try{
				
				FileOutputStream a = new FileOutputStream("D://20140214.txt");
				ObjectOutputStream b = new ObjectOutputStream(a);
				b.writeObject(testNum);
				b.flush();
				b.close();
				
				FileInputStream e = new FileInputStream("D://20140214.txt");
				ObjectInputStream f = new ObjectInputStream(e);
				Num readNum = (Num) f.readObject();
				System.out.print(readNum.a);
				
			}catch(ClassNotFoundException er){
				
				
			}
			catch(FileNotFoundException er){
				
				
			}
			
			catch(IOException er){
				
				System.out.print("123");
			}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值