用IO写入和写出文档

读取~~~~~~~~~~~~~~~~~

private void ReadLogFile()

{

    /**////从指定的目录以打开或者创建的形式读取日志文件

    FileStream fs = new FileStream(Server.MapPath("upedFile")+"\\logfile.txt", FileMode.OpenOrCreate, FileAccess.Read);

 

    /**////定义输出字符串

    StringBuilder output = new StringBuilder();

       /**////初始化该字符串的长度为0

    output.Length = 0;

   

    /**////为上面创建的文件流创建读取数据流

    StreamReader read = new StreamReader(fs);   

 /**////设置当前流的起始位置为文件流的起始点

   read.BaseStream.Seek(0, SeekOrigin.Begin);

       /**////读取文件

    while (read.Peek() > -1)

    {

       /**////取文件的一行内容并换行

        output.Append(read.ReadLine() + "\n");

    }

  

    /**////关闭释放读数据流

   read.Close(); 

   /**////返回读到的日志文件内容

   return output.ToString();

写入~~~~~~~~~~~~~~~~~~~~

private void WriteLogFile(string input)

{   

    /**////指定日志文件的目录

    string fname = Server.MapPath("upedFile") + "\\logfile.txt";

    /**////定义文件信息对象

    FileInfo finfo = new FileInfo(fname);

 

    /**////判断文件是否存在以及是否大于2K

    if ( finfo.Exists && finfo.Length > 2048 )

    {

        /**////删除该文件

       finfo.Delete();

    }

   /**////创建只写文件流

    using(FileStream fs = finfo.OpenWrite())

    {

        /**////根据上面创建的文件流创建写数据流

        StreamWriter w = new StreamWriter(fs);

       

        /**////设置写数据流的起始位置为文件流的末尾

       w.BaseStream.Seek(0, SeekOrigin.End);

        /**////写入“Log Entry : ”

       w.Write("\nLog Entry : ");

       

        /**////写入当前系统时间并换行

       w.Write("{0} {1} \r\n", DateTime.Now.ToLongTimeString(),

            DateTime.Now.ToLongDateString());

      

       /**////写入日志内容并换行

        w.Write(input + "\n");

       

        /**////写入------------------------------------“并换行

        w.Write("------------------------------------\n");

       

        /**////清空缓冲区内容,并把缓冲区内容写入基础流

       w.Flush();       

       /**////关闭写数据流

    w.Close();

}

### Python 文件写入的示例教程 #### 1. 基础概念 在 Python 中,文件操作是一个常见的需求。通过 `open()` 函数可以轻松完成文件的打开、关闭以及数据的读取与写入。`open()` 的基本语法如下: ```python file_object = open(file_name, mode='r', encoding=None) ``` 其中: - `file_name`: 要打开的文件名称或路径。 - `mode`: 打开文件的方式,默认为只读模式 `'r'`。 - `encoding`: 可选参数,用于指定编码方式。 #### 2. 文件写入操作 为了安全地处理文件资源并自动管理其生命周期,推荐使用上下文管理器 (`with`) 来执行文件写入操作[^2]。下面展示了一个简单的例子来说明如何向文件中写入字符串内容: ```python content_to_write = "这是一个测试。\n这是第二行。" with open('example.txt', 'w', encoding='utf-8') as file: file.write(content_to_write) ``` 上述代码会创建名为 `example.txt` 的新文件并将给定的内容写入该文件中。如果目标文件已存在,则会被覆盖;若需追加而非覆盖现有内容,可改用 `'a'` 模式代替 `'w'` 模式[^4]。 对于更复杂的数据结构比如列表,也可以逐项将其转换成字符串形式再存入文档里: ```python data_list = ['item1\n', 'item2\n', 'item3'] with open('list_output.txt', 'w', encoding='utf-8') as f: f.writelines(data_list) ``` 此段脚本利用了 `writelines()` 方法一次性将整个序列中的所有项目连续不断地记录下来。 #### 3. 文件读取操作 同样采用 `with...as` 结构能够简化异常捕获逻辑并且确保最终总会调用 close() 关闭流对象。以下是几种典型的读取场景演示: ##### (1)按字节大小分批加载大容量资料 当面对超大规模档案时,不宜一次性全部载入内存以免造成负担过重的情况发生。此时可以通过循环逐步获取部分内容直至结束为止: ```python chunk_size = 1024 * 1024 # 定义每次读取的最大长度单位为MB级别 try: with open('large_file.bin', 'rb') as binary_f: chunk = binary_f.read(chunk_size) while chunk: process_data(chunk) # 自定义业务逻辑函数模拟实际用途 chunk = binary_f.read(chunk_size) except Exception as err: handle_error(err) # 错误处理器 finally: pass ``` ##### (2)逐行解析文本型材料 针对普通的纯文字档来说,通常我们关心的是每一行的具体含义而不是整体布局关系。因此借助迭代机制逐一访问每条记录往往更为直观方便一些[^1]: ```python line_count = 0 with open('sample_text.txt', 'rt', encoding='utf-8') as txt_f: for line in txt_f: print(f"{line_count}: {line.strip()}") # 移除多余空白符后打印出来便于观察效果 line_count += 1 ``` 以上程序片段实现了统计总共有多少行有效信息的功能同时展示了它们各自的位置编号。 #### 4. 综合案例分析——文件复制功能实现 最后给出一个综合性的实战演练题目即把某个特定位置下的原始素材完整迁移到另一处存储空间去: ```python source_path = input("请输入源文件全路径:") destination_dir = "/target/directory/" import os.path if not os.path.isdir(destination_dir): raise ValueError("目标目录不存在!") basename = os.path.basename(source_path) try: with open(source_path, 'rb') as src_f,\ open(os.path.join(destination_dir, basename), 'wb') as dest_f: buffer = src_f.read(1024*64) # 设置缓冲区大小适当调整性能表现 while buffer: dest_f.write(buffer) buffer = src_f.read(1024*64) except IOError as io_err: report_failure(io_err.args[0]) else: confirm_success() ``` 这段完整的解决方案不仅考虑到了跨平台兼容性还兼顾效率方面做了优化设置合理的块传输尺寸从而达到最佳平衡状态。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值