当前位置:网站首页 > R语言数据分析 > 正文

ifstream读取文件相对路径怎么写(ifstream 读取文件)



io流用来读写文件中的数据 i:input o:output

java FileOutputStream输出到C盘_开发语言

1、按流的方法分为:输入流、输出流

2、按操作文件的类型分为:字节流、字符流

其中字节流能处理所有类型的文件 字符流只能处理纯文本文件

纯文本文件可以通过windows自带的记事本能打开且内容可以看得懂 包括txt、md文件

总结:

java FileOutputStream输出到C盘_数据_02

java FileOutputStream输出到C盘_创建对象_03

java FileOutputStream输出到C盘_java_04

java FileOutputStream输出到C盘_创建对象_05

(1)、概念

操作本地文件的字节输出流 可以将程序中的数据写到本地文件

(2)、步骤

1、创建对象(让程序和文件之间建立一个通道)

2、写数据

3、释放资源(断开程序和文件之间建立一个通道)

防止java程序占用资源 使得在其它程序中可以打开

(3)、细节

java FileOutputStream输出到C盘_创建对象_06

细节1:

java FileOutputStream输出到C盘_开发语言_07

java FileOutputStream输出到C盘_开发语言_08

细节2:

java FileOutputStream输出到C盘_开发语言_09

java FileOutputStream输出到C盘_数据_10

java FileOutputStream输出到C盘_创建对象_11

(4)、写数据的三种方式

FileOutputStream对象.write(int b) 一次写一个字节数据

FileOutputStream对象.write(byte [] b) 一次写一个字节数组数据

FileOutputStream对象.write(byte [] b,int off,int len) 一次写一个字节数组部分数据

off表示起始索引 len表示写入的总个数

方式一:

java FileOutputStream输出到C盘_java_12

方式二:

java FileOutputStream输出到C盘_数据_13

方式三:

java FileOutputStream输出到C盘_java_14

(5)、换行写、续写

换行写:添加

java FileOutputStream输出到C盘_java_15

续写:在创建FileOutputStream对象是 添加参数true

java FileOutputStream输出到C盘_java_16

(6)、小结

java FileOutputStream输出到C盘_创建对象_17

(1)、概念

操作本地文件的字节输入流 可以将本地文件的数据输入到程序中

(2)、步骤

1、创建对象(让程序和文件之间建立一个通道)

2、读数据

3、释放资源(断开程序和文件之间建立一个通道)

防止java程序占用资源 使得在其它程序中可以打开

java FileOutputStream输出到C盘_数据_18

(3)、细节

java FileOutputStream输出到C盘_创建对象_19

细节1:

java FileOutputStream输出到C盘_开发语言_20

(4)、循环读取

(5)、读数据的两种方式

java FileOutputStream输出到C盘_java_21

一次读取一个字节在之前我们已经学习了 现在我们重点学习一次读取多个字节

步骤:

1、创建对象(让程序和文件之间建立一个通道)

2、创建动态数组 数组的长度决定了每次最多读取的个数

3、通过对象.read(数组);存放读到的数据 并通过int len存放返回值

4、创建字符串 String str=new String(bytes,0,len);

5、输出字符串 即可输出读到的数据

防止java程序占用资源 使得在其它程序中可以打开

通过边读边写的思想,先将文件读取到程序中,再将程序中的数据写到另一个文件中

java FileOutputStream输出到C盘_创建对象_22

当拷贝的文件过大时 我们可以通过一次读取多个数据进行读取 提高速度

无论是图片、word、excel、视频等都可以进行复制

如果是文件则直接拷贝 如果是文件夹则需要递归

通过字节流读取文件和写入文件 都是写入对应的编码值

对文件进行加密时 我们就可以将读取文件a得到的字节数据(编码值)进行改变写入文件b

对文件b进行解密时我们就可以将读取文件b得到的字节数据(编码值)进行改变使之变成与读取文件a得到的字节数据一样的数据写入文件c

如何实现?

之间我们学习过异或运算 数1与另一个数2异或两次即可得到原来的数1

我们就可以将数1与另一个数2异或一次看成加密过程

将数1与另一个数2的结果再与数2异或的过程看成解密过程

加密:

解密:

java FileOutputStream输出到C盘_数据_23

io流字符集包括ASCII字符集、GBK字符集、Unicode字符集

数据存储在计算机的形式都是补码!!!

(1)、ASCII字符集

ASCII字符集没有中文的编码

java FileOutputStream输出到C盘_java_24

(2)、GBK字符集

存储英文和ASCII字符集存储英文的格式一样

java FileOutputStream输出到C盘_开发语言_25

java FileOutputStream输出到C盘_java_26

(3)、Unicode字符集

为了统一各个国家的编码 创建了Unicode字符集

Unicode字符集包含了以下三种编码规则:UTF-8、UTF-16、UTF-32

现在我们详细介绍UTF-8的编码规则:

在UTF-8的编码规则下,英文占一个字节,中文占3个字节(且第一个字节的首位是1)

如果是英文,找到Unicode字符集下的编码值后在前面加0即可得到它存储在计算机的值

如果是中文,找到Unicode字符集下的编码值后将其按4 6 6 分成3部分,第一部分前面加1110,第二部分前面加10,第三部分前面加10,即可得到它存储在计算机的值

java FileOutputStream输出到C盘_数据_27

java FileOutputStream输出到C盘_开发语言_28

(4)、字符集小结

java FileOutputStream输出到C盘_创建对象_29

java FileOutputStream输出到C盘_开发语言_30

(5)、产生乱码的原因

1、读取数据时没有读完整个汉字

因为一个汉字按GBK字符集需要2个字节的存储空间、按Unicode字符集需要3个字节的存储空间,而字节流每次读取一个字节,就会导致汉字未读完

2、解码规则和编码规则不一致

因为一个汉字按GBK字符集需要2个字节的存储空间、按Unicode字符集需要3个字节的存储空间,如果按Unicode字符集中UTF-8编码而用GBK字符集进行解码就会将3个字节拆分成2个字节、1个字节进行解码

(6)、解决乱码

java FileOutputStream输出到C盘_开发语言_31

(7)、编码

在idea中默认的编码方式是UTF-8,在eclipse默认的编码方式是GBK

语法1:

字符串.getBytes();

语法2:

字符串.getBytes(指定字符集); 使用指定字符集进行编码

(8)、解码

在idea中默认的解码方式是UTF-8,在eclipse默认的解码方式是GBK

语法1:

new 字符串(字节数组);

语法2:

new 字符串(字节数组,指定字符集); 使用指定字符集进行编码

java FileOutputStream输出到C盘_java_32

(1)、概念

操作本地文件的字符输入流 可以将本地文件的数据读取到程序中

(2)、步骤+细节

1、创建对象(让程序和文件之间建立一个通道)

细节:如果文件不存在则会报错

语法1:

FileReader fr=new FileReader(字符串表示的路径);

语法2:

FileReader fr=new FileReader(文件对象表示的路径);

2、读数据

语法1:无参read方法 一次读取一个数据,返回值为读取的数据(是数据对应的码值),读到末尾返回-1

字符流对象.read();

语法2:有参read方法 一次读取多个数据,返回值为读取的数据(是数据对应的码值),读到末尾返回-1

字符流对象.read(字符数组);

细节:

java FileOutputStream输出到C盘_开发语言_33

而字节流通通都是一个字节一个字节读取

3、释放资源(断开程序和文件之间建立一个通道)

防止java程序占用资源 使得在其它程序中可以打开

语法:

字符流对象.close();

(3)、无参read方法读取数据

java FileOutputStream输出到C盘_java_34

(4)、有参read方法读取数据

java FileOutputStream输出到C盘_数据_35

(1)、构造方法

java FileOutputStream输出到C盘_创建对象_36

当append为true 表示打开续写开关 默认情况下是关闭续写开关

(2)、成员方法(写入数据的5种方式)

java FileOutputStream输出到C盘_数据_37

写一个字符:

写一个字符串:

写一个字符串的一部分:

写一个字符数组:

java FileOutputStream输出到C盘_java_38

(3)、书写细节

java FileOutputStream输出到C盘_数据_39

java FileOutputStream输出到C盘_数据_40

为了提高字节流和字符流的效率 java设计了缓冲流

但是缓冲流是对字节流和字符流进行包装 真正读取和写入数据的还是字节流和字符流

java FileOutputStream输出到C盘_java_41

字节缓冲流的使用与字节缓冲流的使用很相似

(1)、构造方法

java FileOutputStream输出到C盘_创建对象_42

利用字节缓冲流进行拷贝:

一次读取一个字节

利用字节缓冲流进行拷贝:

一次读取多个字节:

java FileOutputStream输出到C盘_开发语言_43

java FileOutputStream输出到C盘_创建对象_44

(1)、构造方法

java FileOutputStream输出到C盘_开发语言_45

(2)、特有方法

java FileOutputStream输出到C盘_数据_46

细节:

readLine()方法读取数据 是一次读取一行数据 遇到回车换行就停止

且不会将回车换行读取到内存中 如果使用println进行打印则会一行一行输出

如果使用print进行打印则不会一行一行输出 会粘在一起

java FileOutputStream输出到C盘_java_47

细节2:

换行 这是BufferedWriter特有的方法 在之前通过字节流或字符流换行 对于不同的操作系统书写的方式不一样

而BufferedWriter只需要通过newLine方法即可在不同的操作系统下实现换行

java FileOutputStream输出到C盘_创建对象_48

细节3:

如果要实现续写 则需要在创建FileWriter时加上true 不是在创建BufferedWriter时添加true

java FileOutputStream输出到C盘_开发语言_49

java FileOutputStream输出到C盘_创建对象_50

java FileOutputStream输出到C盘_创建对象_51

字节基本流 一次读取一个字节:

字节基本流 一次读取一个字节数组:

字节缓冲流 一次读取一个字节:

字节缓冲流 一次读取一个字节数组:

java FileOutputStream输出到C盘_java_52

(1)、概念

转化流是字节流和字符流之间的桥梁

java FileOutputStream输出到C盘_数据_53

(2)、利用转化流按照指定的字符编码读取数据

语法:FileReader 对象名=new FileReader(路径, Charset.forName("字符集"));

java FileOutputStream输出到C盘_开发语言_54

java FileOutputStream输出到C盘_创建对象_55

为了解决这个问题 我们可以指定字符输入流的字符集 使之与文本文件的字符集保持一致

java FileOutputStream输出到C盘_数据_56

(3)、利用转化流按照指定的字符编码写入数据

语法:FileWriter 对象名=new FileWriter(路径, Charset.forName("字符集"));

java FileOutputStream输出到C盘_数据_57

为了解决这个问题 我们可以指定字符输出流的字符集 使之与文本文件的字符集保持一致

java FileOutputStream输出到C盘_java_58

(4)、利用字节流读取文本文件中的每一行数据

语法:

BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(路径)));

详细写法:

简便写法:

(5)、小结

java FileOutputStream输出到C盘_数据_59

只有字节流才有序列化流,字符流没有序列化流

java FileOutputStream输出到C盘_数据_60

(1)、概念

通过序列化流可以将java对象写在本地文件中

(2)、构造方法/成员方法

通过序列化流可以将java对象写在本地文件中

构造方法语法:

ObjectOutputStream 对象名称=new ObjectOutputStream(new FileOutputStream(路径));

成员方法语法:

序列化流对象.writeObject(要写入的java对象);

java FileOutputStream输出到C盘_开发语言_61

细节:

要写入的java对象必须实现Serializable接口才能被写入本地文件

java FileOutputStream输出到C盘_开发语言_62

只有字节流才有反序列化流,字符流没有反序列化流

java FileOutputStream输出到C盘_数据_60

(1)、概念

通过序列化流可以将本地文件中的java对象读取到程序中

(2)、构造方法/成员方法

构造方法语法:

ObjectInputStream 对象名称=new ObjectInputStream(new FileInputStream(路径));

成员方法语法:

序列化流对象.readObject();

java FileOutputStream输出到C盘_开发语言_64

打印流是高级流,只有输出流才有打印流

因此打印流不能从文件读取数据 只能打印数据到文件中

java FileOutputStream输出到C盘_数据_65

java FileOutputStream输出到C盘_开发语言_66

(1)、构造方法

重点掌握第1、2种方法

java FileOutputStream输出到C盘_创建对象_67

(2)、特有方法

特有方法可以将数据原样打印在文件上

java FileOutputStream输出到C盘_创建对象_68

常规方法是将码值为该数字对应的字符打印在文件中

java FileOutputStream输出到C盘_开发语言_69

字符打印流与字节打印流的用法很相似

(1)、构造方法

java FileOutputStream输出到C盘_开发语言_70

(2)、特有方法

特有方法可以将数据原样打印在文件上

java FileOutputStream输出到C盘_java_71

java FileOutputStream输出到C盘_开发语言_72

到此这篇ifstream读取文件相对路径怎么写(ifstream 读取文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • emr和aes区别(emea和ema)2025-09-12 16:36:04
  • vgasave驱动(vgadriver是什么驱动)2025-09-12 16:36:04
  • orecal甲骨文(orecal甲骨文是干嘛的)2025-09-12 16:36:04
  • spring的入门程序详细过程(spring integration入门)2025-09-12 16:36:04
  • spring教程 w3school(spring教程视频推荐)2025-09-12 16:36:04
  • ifstream读取文件相对路径怎么写(ifstream fin读取)2025-09-12 16:36:04
  • redis 连不上(redis 连不上 wsl)2025-09-12 16:36:04
  • bytebuffer.position()的用法(bytebuffer.duplicate)2025-09-12 16:36:04
  • qpainterpath 平移(qpainter drawline)2025-09-12 16:36:04
  • ewma模型和garch(ewma模型和garch模型)2025-09-12 16:36:04
  • 全屏图片