io流

JavaSE——IO流之字符流

和自甴很熟 提交于 2019-12-11 12:48:52
1. 概述 字符流只能读写文本文件 Reader :字符输入流的父类 InputStreamReader 是字节流通向字符流 的桥梁 Writer :字符输出流的父类 OutputStreamWriter 是字符流通向字节流 的桥梁 字符流出现的原因:由于字节流操作中文不是特别方便,所以java就提供了字符流。 编码: 就是把字符串转换成字节数组 =>字符流 = 字节流 + 编码表 2. OutputStreamWriter 字符流写数据的方式 public void write(int c) 写一个字符 public void write(char[] cbuf) 写一个字符数组 public void write(char[] cbuf,int off,int len) 写一个字符数组的一部分 public void write(String str) 写一个字符串 public void write(String str,int off,int len) 写一个字符串的一部分 案例代码 运行结果 OutputStreamWriter的构造方法 OutputStreamWriter(OutputStream out):根据默认编码(GBK)把字节流的数据转换为字符流 OutputStreamWriter(OutputStream out,String charsetName)

Java语法进阶:文件、IO流

混江龙づ霸主 提交于 2019-12-11 11:59:46
File是文件和目录路径名的抽象表示形式,即File类是文件或目录的路径,而不是文件本身,因此File类不能直接访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。 File类的对象用来表示文件和文件夹的对象。 如果这个路径名对应的文件或目录不存在,那么在堆中的File对象的成员变量就是默认值。 如果这个路径名对应的文件或目录存在,那么在堆中的File对象就根据这个路径找到对应的文件或目录,然后将一些信息获取到为File对象的成员变量赋值 常用方法 方法签名 方法功能 File(String pathName) 根据文件、目录的路径名构建File对象 File(String parent, String child) 构建File对象,路径名通过指定父目录与子目录方式来指定 public File(File parent,String child) 从父抽象路径名和子路径名字符串创建新的 File实例 String getName() 获取文件名 long length() 获取文件大小,无法直接获取目录大小,空目录返回0 String getPath() 获取构造路径 String getAbsolutePath() 获取绝对路径 String getCanonicalPath() 获取规范路径 long lastModified() 获取文件最后修改时间

20191210——输入输出 IO流

早过忘川 提交于 2019-12-11 04:40:05
在变量、数组、对象和集合中存储的数据是暂时存在的,一旦程序结束它们就会丢失。为了能够永久地保存程序创建的数据,需要将其保存到磁盘文件中,这样就可以在其他程序中使用它们。Java 的 I/O(输入/输出)技术可以将数据保存到文本文件和二进制文件中, 以达到永久保存数据的要求。 本章首先从基础的流概念、流的分类、系统流的使用开始介绍,进而介绍如何操作文件、读取文件和写入文件。掌握 Java 中 I/O 处理技术能够提高读者对数据的处理能力。 什么是输出输入流 在 Java 中所有数据都是使用流读写的。流是一组有序的数据序列,将数据从一个地方带到另一个地方。根据数据流向的不同,可以分为输入(Input)流和输出(Output)流两种。 输入就是将数据从各种输入设备(包括文件、键盘等)中读取到内存中,输出则正好相反,是将数据写入到各种输出设备(比如文件、显示器、磁盘等)。例如键盘就是一个标准的输入设备,而显示器就是一个标准的输出设备,但是文件既可以作为输入设备,又可以作为输出设备。 数据流是 Java 进行 I/O 操作的对象,它按照不同的标准可以分为不同的类别。 按照流的方向主要分为输入流和输出流两大类。 数据流按照数据单位的不同分为字节流和字符流。 按照功能可以划分为节点流和处理流 输入流 Java 流功能相关的类都封装在 java.io 包中,而且每个数据流都是一个对象

[C++系列] 65. IO流

丶灬走出姿态 提交于 2019-12-09 21:04:32
1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。注意宽度输出和精度输出控制。 C语言借助了相应的缓冲区来进行输入与输出。如下图所示: 对输入输出缓冲区的理解: 1.可以屏蔽掉低级I/O的实现,低级I/O的实现依赖操作系统本身内核的实现,所以如果能够屏蔽这部分的差异,可以很容易写出可移植的程序。 2.可以使用这部分的内容实现“行”读取的行为,对于计算机而言是没有“行”这个概念,有了这部分,就可以定义“行”的概念,然后解析缓冲区的内容,返回一个“行”。 2.流是什么 “流”即是流动的意思,是物质从一处向另一处流动的过程, 是对一种 有序连续 且 具有方向性 的 数据( 其单位可以是bit,byte,packet )的抽象描述。 C++流是指信息从外部输入设备(如键盘)向计算机内部(如内存)输入和从内存向外部输出设备(显示器)输出的过程。这种输入输出的过程被形象的比喻为“流”。 它的特性是:有序连续、具有方向性 为了实现这种流动,C++定义了I/O标准类库,这些每个类都称为流/流类,用以完成某方面的功能 3. C++ IO流 C++系统实现了一个庞大的类库,其中ios为基类

Java中IO流练习题之把ArrayList集合中的字符串数据存储到文本文件

荒凉一梦 提交于 2019-12-09 20:01:14
练习题:把ArrayList集合中的字符串数据存储到文本文件 分析: 通过题目的意思我们可以知道如下的一些内容: ArrayList集合里存储的是字符串。 遍历ArrayList集合,把数据获取到。 然后存储 到文本文件中。 文本文件说明使用字符流 数据源: ArrayList<String> -- 遍历得到每一个字符串数据 目的地: a.txt -- FileWriter -- BufferedWriter public class ArrayListToFileDemo { public static void main ( String [ ] args ) throws IOException { // 封装数据与(创建集合对象) ArrayList < String > array = new ArrayList < String > ( ) ; array . add ( "hello" ) ; array . add ( "world" ) ; array . add ( "java" ) ; // 封装目的地 BufferedWriter bw = new BufferedWriter ( new FileWriter ( "a.txt" ) ) ; // 遍历集合 for ( String s : array ) { // 写数据 bw . write ( s )

再探C++Primer (1) 关于编译及IO流

放肆的年华 提交于 2019-12-07 19:34:50
之前在看primer的时候,第一章的内容一般都会跳过去,今天打算从头再看一次的时候,反而注意到了第一章的东西,很简单的东西,也学到了一些之前没有关注的内容。 ##编译、运行程序# 在之前都是使用现成的IDE来编译运行程序,但是并没有想过究竟编译是个怎么样的过程。在学习linux的过程中,曾经了解过一些编译的过程:编译会将cpp文件内容先预处理,然后用编译器翻译成汇编语言文件,再经汇编器翻译成.o文件,不同的.o文件经由链接器连接到一起成为机器可以识别的.out文件(windows中的.exe)。 那么在windows中cpp文件是怎么由vs2015之类的IDE来编译链接的呢? 在linux中,编译器是gnu,使用gnu编译一个cpp程序的步奏是使用命令g++,而在windows中编译器是vc/vc++,在vs中集成了vc/vc++编译器,所以我们可以使用vs来编译c++程序文件。 随便百度一下,就可以知道windows控制台编译c++程序文件的命令是cl, 格式为CL [option...] file... [option | file]... [lib...] [@command-file] [/link link-opt...],关于具体的命令去查阅文档就可以了,现在只需要知道在cmd控制台,当前目录下的a.cpp文件编译命令是cl a.cpp就可以了。

Java_IO流实验

 ̄綄美尐妖づ 提交于 2019-12-06 12:14:48
实验题目链接: Java第09次实验(IO流) 0. 字节流与二进制文件 我的代码 package experiment.io; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class Experiment { public static void main(String[] args) throws FileNotFoundException { FileOutputStream outFile = new FileOutputStream("student.data"); FileInputStream inFile = new FileInputStream("student.data"); try (DataOutputStream dataOutput = new DataOutputStream(outFile); DataInputStream dataInput = new DataInputStream

JAVA 中的IO流

天涯浪子 提交于 2019-12-06 09:54:55
一、流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。 一个流,必有源端和目的端 ,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。 流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出流,只能往输入流写,而不能读它。 实际上,流的源端和目的端可简单地看成是字节的生产者和消费者,对输入流,可不必关心它的源端是什么,只要简单地从流中读数据,而对输出流,也可不知道它的目的端,只是简单地往流中写数据。 形象的比喻 ——水流 ,文件 ====== 程序 ,文件和程序之间连接一个管道,水流就在之间形成了,自然也就出现了方向:可以流进,也可以流出.便于理解,这么定义流: 流就是一个管道里面有流水,这个管道连接了文件和程序。 二、流的分类 java.io包中的类对应两类流,一类流直接从指定的位置(如磁盘文件或内存区域)读或写,这类流称为 节点流(node stream ), 其它的流则称为过滤器(filters )。过滤器输入流往往是以其它输入流作为它的输入源,经过过滤或处理后再以新的输入流的形式提供给用户,过滤器输出流的原理也类似。 Java的常用输入、输出流 java

Java基础IO类之缓冲流

耗尽温柔 提交于 2019-12-06 08:52:43
首先要明确一个概念:   对文件或其他目标频繁的读写操作,效率低,性能差。   使用缓冲流的好处是:能够高效的读写信息,原理是先将数据先缓冲起来,然后一起写入或者读取出来。 对于字节: BufferedInputStream:为另一个输入流添加一些功能,在创建BufferedInputStream时,会创建一个内部缓冲区数组,用于缓冲数据。 BufferedOutputStream:通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。 对于字符: BufferedReader:将字符输入流中读取文本,并缓冲各个字符,从而实现字符、数组、和行的高效读取。 BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 代码示例: package IODemo; import java.io.*; /* 缓冲的目的: 解决在写入文件操作时,频繁的操作文件所带来的性能降低的问题 BufferedOutStream 内部默认的缓冲大小是 8Kb,每次写入储存到缓存中的byte数组中,当数组存满是,会把数组中的数据写入文件 并且缓存下标归零 */ public class BufferedDemo { //使用新语法 会在try里面帮关掉这个流 private static void

java第14周实验(IO流)

六眼飞鱼酱① 提交于 2019-12-05 18:12:15
0. 字节流与二进制文件 我的代码 public class WriterStu { public static void main(String[] args) { DataOutputStream dos = null; Student[] stus = new Student[100]; Student d1 = new Student(1, "x", 18, 99.5); Student d2 = new Student(2, "x", 19, 100.0); Student d3 = new Student(3, "x", 20, 59.5); try (FileOutputStream fos = new FileOutputStream(new File("e:/Student.data"))) { dos = new DataOutputStream(fos); for (Student student : stus) { dos.writeInt(student.getId()); dos.writeUTF(student.getName()); dos.writeInt(student.getAge()); dos.writeDouble(student.getGrade()); } } catch (FileNotFoundException e) { e