java I/O (一)
java 的I/O类基本上可以分为6大类:二进制的输入,二进制的输出,文本的输入,文本的输出,FILTER类和其他对文件操作的工具类。
Java的I/O类主要在java.io的包里,其中两个主要的流为输入/输出类:java.io.InputStream和java.io.OutputStream.在System这个类中有两个静态的属性in和out,分别对应与键盘的输入和输出到屏幕。
package com.zengbo.iodemo;
import java.io.*;
public class IODemo1 {
public static void main(String[] args){
InputStream in = System.in;
OutputStream out = System.out;
try{
int a = 0;
while(a != -1){
a = in.read();
//System.out.println(a);
out.write(a);
}
}
catch(IOException e){
}
}
}
InputStream 和 OutputStream 是两个抽象类,这里的两个对象是实现了InputStream和OutputStream抽象类的抽象方法的子类的对象。
InputStream 和 OutputStream 类只提供对数据最小单元“byte”的操作函数。这里在read和write操作是,返回的值自动转换为int整形类型。一个整形为4个字节,在读键盘输入时把一个字节的“byte”数据加上3个字节的0,在写文件时,将字节的高位3个字节的数据去掉,只是将最低位的一个字节写到屏幕上,这里高位3个字节为0。所以在执行里面注释的那行代码时会输出asc||码值(因为read函数返回的是int类型,所以用System.out.println(a)会输出asc||码,而out.write(a)则是返回原数据)。
InputStream的主要方法:
int read()
int read(byte chuf[])
int read (byte chuf[],int offset,int length)
第一个返回读取字符的asc||码的十进制表示,后两个函数返回值表示实际读取的长度。
int skip(int over)
skip方法用于跳过数据流中的一些数据,不处理,直接处理后面的数据,skip()的返回值是实际跳过的字节数,参数是想要跳过的字节数。
int available()
获取数据流中的数据量,InputStream的available()方法返回的值是0,其子类可以覆盖该方法。
I/O就是数据流从一个地方流向另一个地方,比如System.in就是从屏幕的数据流向程序,而System.out就是从程序的数据流向屏幕;FileInputStream类就是用来把数据从文件流向程序,FileOutputStream类就是把数据从程序流向文件;PipedInputStream类把数据从管道流向程序,PipeOutputStream类把数据从程序流向管道。
java I/O (一)的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
- c#与java的区别
经常有人问这种问题,用了些时间java之后,发现这俩玩意除了一小部分壳子长的还有能稍微凑合上,基本上没什么相似之处,可以说也就是马甲层面上的相似吧,还是比较短的马甲... 一般C#多用于业务系统的开发 ...
随机推荐
- Zookeeper实现负载均衡
原理解析 架构图 每台WorkServer启动的时候都会到Server创建临时节点. 每台ClientServer启动的时候,都会到S ...
- Python2.x的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
刚遇到这个问题的时候,在网上找了 半天,发现都是说 添加如下三行代码即可解决问题, [python] import sys reload(sys) sys.setdefaultencoding('ut ...
- RecyclerView实现瀑布流效果(二)
在上篇中我们知道RecyclerView中默认给我们提供了三种布局管理器,分别是LinearLayoutManager.GridLayoutManager.StaggeredGridLayoutMan ...
- Ubuntu快速截图
以前截图,都是按Print键全屏截图,Alt+Print可以截当前的窗口.同时把系统自带的截图工具放到面板上,用的时候点击一下,再选择区域截图,很是不方便.不过,Ubuntu允许自己定义快捷键.要自己 ...
- 算法学习笔记(一)C++排序函数、映射技巧与字典树
1.头文件algorithm中有函数sort()用于排序,参数为:排序起始地址,排序结束地址,排序规则(返回bool型)例如,要将array[] = {5,7,1,2,9}升序排列,则使用: bool ...
- Java-ServletContext
//定义了一系列servlet用来与servlet 容器交流的方法 public interface ServletContext { /** * Returns a <code>Serv ...
- JavaScript单线程的疑问与解答
问: JavaScript是单线程的,有任务队列,比如使用setTimeou(func,secs)来在secs毫秒后向任务队列添加func.但是,setTimeout后面跟一个死循环,那么死循环导致任 ...
- iOS监听模式之KVO、KVC的高阶应用
KVC, KVO作为一种魔法贯穿日常Cocoa开发,笔者原先是准备写一篇对其的全面总结,可网络上对其的表面介绍已经够多了,除去基本层面的使用,笔者跟大家谈下平常在网络上没有提及的KVC, KVO进阶知 ...
- Android NFC开发(一)——初探NFC,了解当前前沿技术
Android NFC开发(一)--初探NFC,了解当前前沿技术 官方文档:http://developer.android.com/guide/topics/connectivity/nfc/ind ...
- spring注解关键字
spring注解: (1)@Controller 控制器 (2)@Autowired 按照类型匹配,可以完成对类成员变量,方法及构造函数进行标注,完成自动装配的工作 @Autowired ...