qt中保存内容到文件为啥要输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt中保存内容到文件为啥要输出相关的知识,希望对你有一定的参考价值。

qt中保存内容到文件为什么要输出,QTextStream out(&file);//输出
而读取文件内容时却要输入, QTextStream in(&file);//输入

输入和输出是对QTextStream对象的数据流向而言。描述上的习惯,不必深究。这样理解:

读取文件内容到QTextStream对象时,数据流是流"入"QTextStream对象,所以是输入。
从QTextStream对象保存内容到文件时,数据流是流"出"QTextStream对象,所以是输出。
参考技术A 这与命名没关系!主要是看你如何操作! in<<和out<<是写入文件;in>>和out>>是写出文件!也可以调用函数append追加.还有就是还要看你打开文件的方式!就和C++打开文件差不多. 参考技术B 帮你找到了一个比较接近的,
貌似我说错了呢,out是往文件里边写入,in是读取吧,
这个类没用过,我使用的msdn也没查到相关的资料

参考资料:http://www.oschina.net/question/108295_48261

来自:求助得到的回答
参考技术B 这个是参照问题,以系统为中心(假设系统就是一个CPU),那么当CPU向其他部分发送信息就叫输出,其他部分向CPU发送信息就叫输入
CPU向文件输出内容 输出
CPU从文件读入内容 输入

如果以文件为中心,那就正好相反了

输入输出

输入输出

重定向

什么是重定向?

将原本要输出到屏幕上的内容,重新输入到其他设备中

为什么要学重定向

以下需求都需要重定向
# 1.输出的内容,比较重要的时候,我们想把它保存到文件中 
# 2.在后台执行的程序,我不想让它输出的内容,干扰到屏幕 
# 3.将定时任务的结果保存下来(备份,是否成功) 
# 4.一些执行的命令,知道它有可能会有错误输出,但是不想看错误输出 
# 5.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件。

命令返回值(扩展)

如何判断一个命令是否执行成功????? 
echo $?   命令的返回值 返回值是0,则代表上一条命令执行成功 
返回值非0,则代表上一条命令执行不成功

输入与输出

文件描述符

名称 文件描述符 作用
stdin 0 标准输入
stdout 1 标准输出
stderr 2 错误输出
文件名 3+
1.stdin标准输入:我们使用键盘在终端或文件种输入内容时就是一种标准输入
2.stdout标准输出:最直观的例子,我们的电脑屏幕反馈给我们的结果,以及我们执行命令时系统在屏幕中反馈的结果也是标准输出
3.stderr错误输出:我们执行命令后的报错,比如我们使用命令时报错Permission denied(权限被拒绝),属于错误输出

#文件描述符
文件描述符,我们在运行程序或命令时,都会产生与之对应的文件描述符,产生的文件描述符也属于数据,会占据我们的内存,每一个程序至少有四个文件描述符,不论程序还是命令。
新装系统中大部分都是1024的文件描述符容量
#查看文件描述符容量命令
[xwq@ltl ~]$ ulimit -n
1024

#查看程序或命令的描述符
ll /proc/后台(pid)/fd
[xwq@ltl ~]$ ps -ef |tail -3
root        520      1  0 18:27 ?        00:00:02 /usr/bin/vmtoolsd
dbus        523      1  0 18:27 ?        00:00:00 /usr/bin/dbus-daemon --syst
root        534      1  0 18:27 ?        00:00:00 /usr/sbin/crond -n

[root@ltl ~]# ll /proc/520/fd
total 0
lr-x------ 1 root root 64 Apr 13 18:27 0 -> /dev/null
lrwx------ 1 root root 64 Apr 13 18:27 1 -> socket:[16504]
lrwx------ 1 root root 64 Apr 13 18:27 2 -> socket:[16504]
l-wx------ 1 root root 64 Apr 13 18:27 3 -> /var/log/vmware-vmsvc-root.log
lrwx------ 1 root root 64 Apr 13 18:27 4 -> anon_inode:[eventfd]
lr-x------ 1 root root 64 Apr 13 18:27 5 -> pipe:[16668]
l-wx------ 1 root root 64 Apr 13 18:27 6 -> pipe:[16668]
lrwx------ 1 root root 64 Apr 13 18:27 7 -> anon_inode:[eventfd]
lrwx------ 1 root root 64 Apr 13 18:27 8 -> socket:[17186]

#root        520      1  0 18:27 ?        00:00:02 /usr/bin/vmtoolsd   可以看到该文件的文件描述符有9个

输入输出符号

名称 符号 作用
标准输入重定向 <或者0< 将符号右边的内容交给符号左边的命令
<<或者0<<
标准输出覆盖重定向 \\> 或者 1> 将原本要输出在屏幕上的正确内容,覆盖到重定向的文件中
标准输出追加重定向 \\>> 或者1>> 将原本要输出在屏幕上的正确内容,追加到重定向的文件中
错误输出覆盖重定向 2> 将原本要输出在屏幕上的错误内容,覆盖到重定向的文件中
错误输出追加重定向 2>> 将原本要输出在屏幕上的错误内容,追加到重定向的文件中

输出重定向举例

## 错误输出和正确输出,同时写入同一个文件 
[zls@localhost ~]$ find / -type d -name *zls* &> /tmp/a.txt 
#第一种,直接将错误输出和正确输出一次性全部定向到/tmp/a.txt文件里

[zls@localhost ~]$ find / -type d -name *zls* > /tmp/a.txt 2>&1
#第二种,将错误输出与正确输出合并之后再塞进/tmp/a.txt

输入重定向

#示例相关的命令,设备
命令:dd  命令用于读取、转换并输出数据。
dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

/dev/zero 文件,可以无限取出数据

#曾导示例
dd if=/dev/zero of=/file1.txt bs=1M count=20 
#第二种命令解释
dd < /dev/zero > /filet.txt bs=1M count=20

bs:取出的数据单位
count:取出的数量
#将取出的数据给到dd命令,再由dd交给filet.txt文件

dd if=/dev/zero of=/opt/disk bs=1K count=1024
dd < /dev/zero > /filet.txt bs=1k count=1024
#与上题讲解同理,只是数据单位及数量的变化

以上是关于qt中保存内容到文件为啥要输出的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Spark 将 Map 阶段输出保存到本地磁盘?

如何使用输出流或任何有效的方式将数据保存到文件中?

linuxlog输出到终端怎么解决

Java 保存图片到数据库时,为啥要对图片进行base64编码

将标准输出从 subprocess.Popen 保存到文件,并将更多内容写入文件

关于PHP文件操作: php保存数据到文本文件,怎么弄?