`
qforever
  • 浏览: 5750 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

为什么读入文件并修改之后, 原文件依然没有变化?

阅读更多
open("example", "r+").readlines.each_with_index{|l, i|
  l[0,0] = (i+1).to_s + ": "}

上面的代码并不能将行号添加到example中。这是因为该代码并没有修改原文件, 而只是修改了readlines读入的字符串而已。必须将修改后的内容写入文件才行。

io = open("example", "r+")
ary = io.readlines
ary.each_with_index{|l, i| l[0,0] = (i+1).to_s + ": "}
io.rewind
io.print ary
io.close

此时因为文件增大了, 所以没有出现什么问题. 如果文件变小的话,就必须将下列代码

io.flush
io.truncate(io.pos)

嵌入到io.close之前才行.

分享到:
评论

相关推荐

    BMP.zip_C++源码_C++读入bmp_打开保存BMP文件

    1. 打开文件:使用`ifstream`类打开BMP文件,并设置为二进制模式(`ios::binary`)。 2. 读取文件头:读取前14个字节,解析文件头信息。 3. 读取位图信息头:接着读取40个字节,获取图像尺寸、颜色深度等信息。 4. ...

    读取DBF文件

    数据记录部分紧跟文件头之后,每个记录以定长格式存储,开头的字节表示该记录是否被标记为删除状态。记录中各字段紧密相连,无分隔符,所有数据以ASCII码形式存储,且每个字段的长度固定,确保数据的一致性和完整性...

    你必须知道的495个C语言问题

    为什么这些问题如此频繁地出现? 5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 5.17 说真的,真有...

    《你必须知道的495个C语言问题》

    为什么这些问题如此频繁地出现? 60 5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 60 5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 60 5.17 说真的...

    关于UNIX上文件映射技术的学习报告

    - **普通读写文件**:当程序需要访问文件时,数据会先从硬盘读入内核缓冲区,然后从内核缓冲区拷贝到用户空间,修改后再从用户空间拷贝回内核缓冲区,最后写回硬盘。这一过程涉及四次数据拷贝,且跨越了用户空间和...

    操作系统项目之文件系统

    5. **日志记录与事务处理**:用于跟踪文件系统的变化,并在系统崩溃或异常时恢复数据一致性。 在这个"Project-for-os-fileSystem-master"的项目中,可能包含了实现上述功能的源代码和文档,包括文件的创建、打开、...

    C语言FAQ 常见问题列表

    previous up contents next C 语言常见问题集 ...为什么它没有崩溃? o 8.5 一个指针变量分配多少内存? o 8.6 我有个函数, 本该返回一个字符串, 但当它返回调用者的时候, 返回串却是垃圾信息。 ...

    jvm 加载class文件

    由于Java的动态性,只要修改了类中的成员变量或者方法,相应的`.class`文件就会发生变化,这就要求Java能够及时响应这些变化。 #### 二、JVM加载Class文件的过程分析 在深入探讨之前,我们首先了解Java类加载器...

    复查测验提交_ 第10、11章 文件系统 作业 – 操作系统1

    5. "Open"系统调用:在文件系统中,`Open`调用的基本操作是将文件控制信息从外部存储读入内存,以便于后续的文件操作。问题3中的正确答案正是这个过程。 6. 文件系统相关的缩写:问题4和5涉及到了几种文件系统相关...

    C++从文本文件读取数据到vector中的方法

    在C++编程中,有时我们需要从文本文件读取数据并将其存储到容器中,例如`std::vector`。`std::vector`是一个动态大小的数组,它可以方便地扩展以适应不断变化的数据需求。本篇文章将详细讲解如何使用C++从文本文件...

    快速复制:为控制台构建的增量文件复制应用程序

    快速复制是一款专为控制台设计的增量文件复制应用程序,它主要使用C#编程语言实现。在深入探讨这个项目之前,让我们先理解增量复制的基本概念。增量复制是一种高效的数据备份策略,它只复制自上次备份以来发生更改的...

    你必须知道的495个C语言问题(PDF)

    老资源。 目录 1 声明和初始化1 1.1 我如何决定使用那种整数类型? . . . ....1.2 64 位机上的64 位类型是什么样的? .... ....为什么这些问题如此经常地 出现? . . . . . . . . . . . . . . . . . . . ...

    从txt中读入参数值

    在编程领域,有时候我们需要处理一些不确定或可配置的参数,这些参数可能会随着时间和需求变化而改变。在这种情况下,将参数存储在文本文件中是一种常见的做法,因为它方便编辑、查看和共享。本文将深入探讨如何在VS...

    vfp6.0系统免费下载

    问题 2-11: 为什么在运行时刻修改表单新的 Scrollbars 属性时,表单上并不显示滚动条? 答案: 在表单建立之前,Visual FoxPro 会读入表单的 Scrollbars 属性设置,因为此属性的值将决定表单的创建方式。如果 ...

    Flotherm 软件高级培训

    在实际操作中,可能会遇到项目文件损坏而导致无法加载的情况,此时可以通过特定的目录下,将group文件拷出并添加.pdml后缀,之后重新读入该文件来恢复项目,但这种方法不能恢复计算结果。 网格划分技术是任何有限元...

    kraken计算传播损失的程序及使用说明书

    总的来说,这个压缩包提供了一套完整的Kraken工具包,包括了软件文档、执行文件、相关库和实例代码,可以帮助用户全面了解并掌握使用Matlab2014b计算传播损失的方法。在实际操作中,用户需要按照说明书的指引安装和...

    词法分析程序实现VC

    词法分析程序是编译器设计中的重要组成部分,它负责将源代码文本转换为一系列有意义的符号,称为标记(Token)。在计算机科学中,编译原理是研究如何将高级编程语言转换为机器可理解的指令集的一门学科。在这个过程...

    逐字比较器逐字比较器逐字比较器

    3. 版本控制系统:如Git、SVN等,它们使用逐字比较来跟踪文件的变更历史,确定哪些部分被修改过,并记录这些变化。 4. 数据完整性验证:在数据传输或备份过程中,通过逐字比较源文件和目标文件,可以确认数据是否...

    API之网络函数---整理网络函数及功能

    SetFileTime 设置文件的创建、访问及上次修改时间 SetHandleCount 这个函数不必在win32下使用;即使使用,也不会有任何效果 SetVolumeLabel 设置一个磁盘的卷标(Label) SystemTimeToFileTime 根据一个FILETIME...

Global site tag (gtag.js) - Google Analytics