-
2017-06-04 17:03:19
cin
- cin是istream类的派生类对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符>>从流中提取数据。
- 提取数据时通常跳过输入流中的空格,Tab键,换行符等空白字符。
- 只有在键盘输入完数据并按Enter键之后,该行数据才被送入键盘缓冲区,形成输入流,提取运算符>>才能从中提取数据
- 在遇到无效字符或者文件结束符时(不是换行符,是文件中的数据已经读完),输入流cin就处于出错状态,既无法正常提取数据。所有提取操作将终止。此时cin的值为false即为0。若正常状态,不为零。
cin.get()
- 无参数的
用来从指定输入流中提取一个字符(包括空白字符),函数的返回值就是读入的字符。若遇到文件结束符,返回EOF,也就是-1。
读取一个数据并赋值给c
c=cin.get(); 或者 cin.get(c);
2.有参数的
cin.get(字符数组,字符个数n,终止字符)
作用是从输入流中读取n-1个字符,赋值给指定数组,如果在读取n-1个字符前遇到指定的终止字符,则提前结束读取。如果读取成功返回非0,失败返回0.
3.用getline读取
cin.getline(字符数组,字符个数n,终止字符)
cin.eof()
1.监测文件结束符
cin.peek()
1.观测下一个字符,但是指针仍停留在当前位置
cin.putback()
1.cin.putback(ch);作用是将ch返回到输入流,插入到当前位置,以供后面读取
cin.ignore(n,终止字符)
1.跳过输入流中的n个字符,或在遇到指定的终止字符提前结束
也可以不带参数或者只带一个参数
ignore() n默认值为1,终止字符默认为EOF更多相关内容 -
JAVA基础(标准输入流)
2019-07-09 14:59:49System.in是InputStream, 标准输入流, 默认可以从键盘输入读取字节数据 System.out是PrintStream, 标准输出流, 默认可以向Console中输出字符和字节数据 2,修改标准输入输出流 修改输入流: System.set...1,什么是标准输入输出流(
-
System.in是InputStream, 标准输入流, 默认可以从键盘输入读取字节数据
-
System.out是PrintStream, 标准输出流, 默认可以向Console中输出字符和字节数据
2,修改标准输入输出流
-
修改输入流: System.setIn(InputStream)
-
修改输出流: System.setOut(PrintStream)
【1】 SystemInOut
public class Demo06_SystemInOut { public static void main(String[] args) throws IOException { //demo1(); System.setIn(new FileInputStream("a.txt")); //改变标准输入流 System.setOut(new PrintStream("b.txt")); //改变标注输出流 InputStream is = System.in; //获取标准的键盘输入流,默认指向键盘,改变后指向文件 PrintStream ps = System.out; //获取标准输出流,默认指向的是控制台,改变后就指向文件 int b; while((b = is.read()) != -1) { ps.write(b); } //System.out.println(); //也是一个输出流,不用关,因为没有和硬盘上的文件产生关联的管道 is.close(); ps.close(); } public static void demo1() throws IOException { InputStream is = System.in; int x = is.read(); System.out.println(x); is.close(); InputStream is2 = System.in; int y = is2.read(); System.out.println(y); } }
3,修改标准输入输出流拷贝图片
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; public class Test2 { public static void main(String[] args) throws IOException { System.setIn(new FileInputStream("元.jpg")); //改变标准输入流 System.setOut(new PrintStream("copy.jpg")); //改变标准输出流 InputStream is = System.in; PrintStream ps = System.out; byte[] arr = new byte[1024]; int len; while((len = is.read(arr)) != -1) { ps.write(arr, 0, len); } is.close(); ps.close(); } }
-
-
IO —— 标准输入流和标准输出流
2016-07-24 08:26:33这一节讲解标准输入流和标准输出流。例1:示例了 syso 或者 sout 的深层道理,其实就是 PrintStream/** * Created by liwei on 16/7/19. */ /* * System.in 标准输入流。是从键盘获取数据的 * * 键盘录入数据的...说明:这里的标准不可以理解为“规范”。标准输入指键盘输入,标准输出指控制台输出。
这一节讲解标准输入流和标准输出流。
例1:示例了 syso 或者 sout 的深层道理,其实就是 PrintStream
/** * Created by liwei on 16/7/19. */ /* * System.in 标准输入流。是从键盘获取数据的 * * 键盘录入数据的三种方法: * A:main方法的args接收参数。 * java HelloWorld hello world java * B:Scanner(JDK5以后的) * Scanner sc = new Scanner(System.in); * String s = sc.nextLine(); * int x = sc.nextInt() * C:通过字符缓冲流包装标准输入流实现 * BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); */ public class SystemInDemo { public static void main(String[] args) throws IOException{ // //获取标准输入流 // InputStream is = System.in; // //我要一次获取一行行不行呢? // //行。 // //怎么实现呢? // //要想实现,首先你得知道一次读取一行数据的方法是哪个呢? // //readLine() // //而这个方法在哪个类中呢? // //BufferedReader // //所以,你这次应该创建BufferedReader的对象,但是底层还是的使用标准输入流 // // BufferedReader br = new BufferedReader(is); // //按照我们的推想,现在应该可以了,但是却报错了 // //原因是:字符缓冲流只能针对字符流操作,而你现在是字节流,所以不能是用? // //那么,我还就想使用了,请大家给我一个解决方案? // //把字节流转换为字符流,然后在通过字符缓冲流操作 // InputStreamReader isr = new InputStreamReader(is); // BufferedReader br= new BufferedReader(isr); InputStream is = System.in; PrintStream pw = System.out; pw.println("今天是个好日子"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入一个字符串:"); // 代码执行到这一行发生阻塞 String line = br.readLine(); System.out.println("您输入的字符串是:" + line); System.out.println("请输入一个整数:"); line = br.readLine(); Integer i = Integer.parseInt(line); System.out.println("您输入的整数是:" + i); } }
例2:标准输出流的清晰认识
/* * 标准输入输出流 * System类中的两个成员变量: * public static final InputStream in “标准”输入流。 * public static final PrintStream out “标准”输出流。 * * InputStream is = System.in; * PrintStream ps = System.out; */ public class SystemOutDemo { public static void main(String[] args) { System.out.println("hello world"); // 获取标准输出流对象 // 有这里的讲解我们就知道了,这个输出语句其本质是IO流操作,把数据输出到控制台。 PrintStream ps = System.out; ps.println("今天是你的生日中国"); ps.println(); ps.println("演唱:董文华"); // ps.print();//这个方法不存在 // System.out.println(); // System.out.print(); } }
例3:转换流的应用
/** * Created by liwei on 16/7/20. * * 转换流的应用 */ public class SystemOutDemo2 { public static void main(String[] args) throws IOException { // 获取标准输入流 // // PrintStream ps = System.out; // // OutputStream os = ps; // OutputStream os = System.out; // 多态 // // 我能不能按照刚才使用标准输入流的方式一样把数据输出到控制台呢? // OutputStreamWriter osw = new OutputStreamWriter(os); // BufferedWriter bw = new BufferedWriter(osw); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); bw.write("hello world"); bw.newLine(); bw.write("liwei"); bw.newLine(); bw.write("haha"); bw.newLine(); bw.flush(); bw.close(); } }
-
IO流相关知识(File,字节流,字符流,特殊操作流(标准输入流,标准输出流,对象序列化与反序列化,...
2021-08-29 14:40:48IO流相关知识(File,字节流,字符流,特殊操作流(标准输入流,标准输出流,对象序列化与反序列化,properties与IO流结合))相关知识总结 文章目录IO流相关知识(File,字节流,字符流,特殊操作流(标准输入流,...IO流相关知识(File,字节流,字符流,特殊操作流(标准输入流,标准输出流,对象序列化与反序列化,properties与IO流结合))相关知识总结
前言
流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出
一、File
1.File类的概述和构造方法
通过如上的图相信对文件打的相关应用已经有了初步的认识,因为封装的不是真正存在的文件,仅仅是一个路径名而已,所以没有那个路径的文件也可以写,不会报错,将来是把不存在的转换为具体存在的。2.File类创建功能
这里需要注意的是:不能根据目录来判断是创建的文件还是目录,而是通过调用的方法来判断的,路径那个只是名字而已,文件和目录的名字也不能是一样的3.File类判断和获取功能
4.File类删除功能
注意:File的相关操作与字节流没有继承的关系,所以要删除文件的话还是的用File的删除功能才可二、字节流
1.IO流的概述和分类
概述
分类
2.字节流写数据
记得一定要释放资源3.字节流写数据的两个小问题
字节流写数据如何换行
不同的操作系统的换行是不一样的
字节流写数据如何实现追加写入
值得注意的是是在文件的后面添加,而原来的数据还是有的,所以在用的时候就要考虑一下是怎样使用自己的文件的4.字节流写入数据假异常处理
就是简单的异常处理而已,如果不使用处理的话就抛出就可以了5.字节流读数据(重点)
一次读一个字节的数据
标准的代码格式就是这样的
一次读一个数组的数据
字节流读数据其实很简单,这里需要注意的是字节流读数据的话可以有两种方法,至于使用怎样的方法就得取决于自己得使用就行了6.字节缓冲流
7.如何选择怎样得数据读取呢?
从图中可以看出字节缓冲流得读取比基本得字节读取要快很多,如果要节省时间得话就可以考虑用字节缓冲流来进行字节流得读取三、字符流
1.为什么会出现字符流?
所以他的底层操作的实质还是字节流
编码表
这里需要注意的是用的什么编码就必须用对应的解码,否则就会出现乱码的情况2.字符串中的编码解码问题
3.如何实现解决编译解码的问题
其实写的时候是写在了缓冲区,并没写在文件里,可以刷新,也可以关闭流它会自动的刷新代码理解
4.字符流写数据的方法
5.字符流读数据的方法
字节流与字符流的读数据的思想是一样的只不过一个是字符,一个是字节而已6.字符流复制文件
其方法和字节流的方法一样,只是一个是字节一个是字符而已
方法一:一个一个的字符进行的复制
方法二:一个字符数组一个字符数组的复制准换流
OutputStreamWriter 他又一个子类是:FileWriter
InputStreamReader 它有一个子类是: FileReader
我们在复制文件等相关操作的时候可以用他的子类进行操作,书写更加的简单,但是,在进行编码问题解决的时候还是得用转换流才可以7.字符缓冲流
字符缓冲流的特有功能
那么可以做什么呢?
我们可以通过其中特有的功能进行文件的复制等
需要注意的是readline只是读的是内容,不读其他的8.字节,字符流小结
(此时有个使用的问题就是用哪儿文件的读取就写哪儿,写在一起容易出问题,还有就是一定要释放资源)
字节流
字符流
关于乱码的问题
个人认为出现乱码是因为如果用的是字节流的话用char来强制转换显示的话就是只有其中的一部分并没有把一个汉字的那个文字表达组如(【-1,23,36】)表达完整,但是如果用new String()来显示的话会表达完整(可能是里面有相应的方法,具体不清楚,知道就行了),如果用的是字符流的话就是用的默认的编码以及你相应要求的编码来表达,所以就不会出现乱码的问题了9.复制文件的异常处理
四、特殊操作流
1.标准输入流
2.标准输出流
3.打印流
字节打印流
字符打印流
4.对象序列化流与对象反序列化流(它是基于字节流上的)
对象序列化流
对象反序列化流5.解决对象序列化流的三个问题
6.Properties
代码理解(properties作为map集合的使用)
properties作为集合特有的方法
第一个是写数据进入集合
第二个是根据键得到值
第三个是得到键得集合Properties和IO流结合的方法
集合数据写到文件
文件写到集合
总结
IO流其实很简单,重点是要掌握其中的字节流读写方法,以及字符流的读写方法和Properties与IO流结合的进行使用。
-
读取文件,到标准输入流(c语言 和 c++版)
2016-12-17 20:57:06做网上的OJ的时候,读取输入文件到标准输入流是一种很有效的方法 下面就介绍c语言版的和c++版的两种方法 一:c语言版 代码: #include #include int main() { freopen("E:/in.txt", "r", stdin); //... -
c从标准输入流读取一行的的方法
2018-06-28 18:15:45int main() { char data[1000]; while(gets(data)) { int len = strlen(data) ; printf("%s %d\n",data,len); } return 0; } -
标准输入输出流(InputStream ,PrintStream )
2020-05-12 20:23:04public static final InputStreamin:标准输入流。通常该流对应于键盘输入或者由主机环境或用户指定的另一个输入源 public static final PrintStream out:标准输出流。通常该流对应于显示输出或者由主机环境... -
stdin标准输入流
2012-05-03 11:25:56stdin是C中的标准输入流,它是缓冲输入方式。 在程序中,当用户调用stdin相关函数从键盘中获取字符时,函数会先去缓冲区中查看当前是否存在字符。如果存在,则会取出字符;如果不存在,则会中断,提示用户输入。 ... -
从标准输入流中读取数据
2011-12-07 14:28:55* 行了包装, 所以打印出来的跟输入进去的是一样的 * 因为字节跟字符的转换,它的内部已经整理好了 * * @throws Exception */ public void input1() throws Exception { String s=null; ... -
cin标准输入流的错误处理
2015-11-06 18:12:44首先这个知识我是在《C++ primer plus》第六版这本书上了解到的,在第六章的187页开始,对于cin标准输入流检测到用户输入了错误内容时,一般情况下应采取以下三个步骤一一进行: 1.重置cin以接受新的输入。 2.删除... -
JavaSE基础(133) 标准输入输出流以及标准错误输出流的基本使用
2018-09-09 21:18:15标准输入输出流以及标准错误输出流的基本使用: System.out是一个特殊的 PrintStream "标准"输出流==》 输出结果到控制台System.err是一个特殊的 PrintStream "标准"错误输出流==》输出到控制台System.in是一个... -
c++中的标准输入/输出流对象
2019-09-11 14:58:10一、标准输入流对象cin cin必须与运算符>>配套使用例如: cin>>x; 当用户从键盘输入的数值时,输入的数值会自动转换为变量x的类型,并存入变量x内。 注意:x必须是基本数据类型,而不能是void... -
python 标准输入输出流
2016-11-13 23:58:06python 中有三种标准输入输出流:sys.stdin、sys.stdout、sys.error>>> f = open("1.txt", "r") # fileno方法可返回整数的底层实现使用请求从操作系统的I/O操作的文件描述符(可理解为是第几个打开的文件) >>> f.... -
Java中标准的输入输出流
2018-05-24 16:41:04标准的输入输出流 InputStream in = System.in PrintStream out = Syste.out程序示例InputStream in = System.in public static void main(String[] args) throws IOException { //标准输入流 ... -
C++ 标准输入流总结
2015-08-11 11:22:21既然上一篇文章对标准输出流cout的格式化输出进行了总结,那么这篇文章就对c++的标准输入流用法进行全面总结。 以下是关于C++编程中cin的几个常见用法: 1. cin 用法1:最基本,也是最常用的用法,输入一个... -
java的标准输入/输出流
2017-04-19 20:22:10大体了解了一些java中标准流变量和...Java通过系统类System实现标准输入/输出的功能,定义了3个流变量:in,out,和err.这3个流在Java中都定义为静态变量,可以直接通过System类进行调用。System.in表示标准输入 -
linux下程序的标准输入流输出流错误流
2017-05-19 01:19:57首先是代码 #include int main() ...//此行代码就是由我们stdio.h中的标准输出流完成的 ...//此行代码就是由我们stdio.h中的标准输入流完成的 printf("input value is :%d\n",a); return 0; } 当我生成 -
Python标准输入输出
2019-08-13 23:29:19以一个从控制台接收用户输入的名字字符串为例,排除空格和单纯的换行符 import sys while True: sys.stdout.write("请输入你的名字:") name = sys.stdin.readline() if not name.strip(): sys.stdout.write... -
linux随笔(一) | 标准输入、输出、错误流
2018-11-14 12:23:45在lunix中,有三种标准流:标准输入流、标准输出流、标准错误流。为了区分这三种流,linux分别为他们编号0, 1,2 进行区分。也就是说标准输入流的编号为0、标准输出流 为1 、标准错误流编号为2。在默认的情况下,l.... -
[Linux C语言](学习笔记)标准输入流输出流以及错误流
2017-07-09 21:57:17stdin 标准输入流,标准的输入设备默认键盘stdout 标准输出流,标准的输出设备默认屏幕stderr 标准错误流,只有程序出错时才会执行的流程printf(“abc”) 是对fprintf(stdout,”abc”)函数的封装.把“ ”内的内容... -
C++从标准输入输出读取字符串
2019-09-13 14:22:36C++从标准输入输出读取字符串1、getline()方法在C++中本质上有两种getline函数:第一种:在头文件<istream>中,是iostream类的成员函数。第二种:在头文件<string>中,是普通函数。第一种在<istream&... -
Java中标准输入输出流的重定向
2014-12-10 23:57:37当程序通过System.in来获取输入的时候,默认情况下,是从键盘读取输入;当程序试图通过System.out执行输出时,程序总是输出到显示器。如果我们想对这样的情况做一个改变,例如获取输入时,不是来自键盘,而是来自... -
Java输入输出流
2021-03-11 11:58:19Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java...