首页 新闻 会员 周边

C#编写读写文件

0
悬赏园豆:200 [已解决问题] 解决于 2018-11-27 10:39

编写一个可以读一个文件夹里的所有TXT文件,然后改TXT里的某个固定词,把改了的TXT文件名写到另一个文件里

Luo586484的主页 Luo586484 | 初学一级 | 园豆:8
提问于:2018-11-27 08:52
< >
分享
最佳答案
0

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
listDirectory(@"C:\Doc");

    }
    static void listDirectory(string path)
    {
        DirectoryInfo root = new DirectoryInfo(path);
        //遍历文件
        foreach (FileInfo NextFile in root.GetFiles())
        {
            if (NextFile.Extension == ".txt")
            {
                StreamReader sr = new StreamReader(NextFile.FullName, Encoding.Default);
                string content = content = sr.ReadToEnd();
                var newcontent = content.Replace('a', 'b');  //替换固定词

                string filePath = NextFile.DirectoryName + "\\" + Guid.NewGuid().ToString() + ".txt"; //写入新文件
                if (File.Exists(filePath))
                    File.Delete(filePath);

                FileStream fs = new FileStream(filePath, FileMode.Create);
                //获得字节数组
                byte[] data = System.Text.Encoding.Default.GetBytes(newcontent);
                //开始写入
                fs.Write(data, 0, data.Length);
                //清空缓冲区、关闭流
                fs.Flush();
                fs.Close();
            }

        }

        //遍历文件夹
        foreach (DirectoryInfo NextFolder in root.GetDirectories())
        {
            listDirectory(NextFolder.FullName);
        }
    }
}

}

收获园豆:200
chester·chen | 小虾三级 |园豆:507 | 2018-11-27 09:31

我还没有试 你这个能把改了的TXT文件名存到另一个文件里吗 好像不可以吧

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 09:33

@Luo586484: 可以

chester·chen | 园豆:507 (小虾三级) | 2018-11-27 09:34

@老六代码: 等我一下

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 09:35

@Luo586484:

            string filePath = NextFile.DirectoryName + "\\" + Guid.NewGuid().ToString() + ".txt"; //写入新文件
            if (File.Exists(filePath))
                File.Delete(filePath);

            FileStream fs = new FileStream(filePath, FileMode.Create);
            //获得字节数组
            byte[] data = System.Text.Encoding.Default.GetBytes(newcontent);
            //开始写入
            fs.Write(data, 0, data.Length);
            //清空缓冲区、关闭流
            fs.Flush();
            fs.Close();

这一段就是写入新文件

chester·chen | 园豆:507 (小虾三级) | 2018-11-27 09:35

@老六代码: 好的 你这个是只能改词吗 就是可以改一句话或者一段符号吗 比如qwer.asdf.zxcv

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 09:44

@Luo586484:
var newcontent = content.Replace("qwer.asdf.zxcv", "aaa");

这样修改字符串

chester·chen | 园豆:507 (小虾三级) | 2018-11-27 09:45

@老六代码: 还有最后一点问题 就是我是要改了的TXT文件从新存一个文件 你这个是存入当前文件 还把名字改了 我就是要这个名字呀

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 09:50

@Luo586484:

我这个就是存入一个新文件了,没有改文件名

            string filePath = NextFile.DirectoryName + "\\" + Guid.NewGuid().ToString() + ".txt"; //写入新文件
            if (File.Exists(filePath))
                File.Delete(filePath);

            FileStream fs = new FileStream(filePath, FileMode.Create);
            //获得字节数组
            byte[] data = System.Text.Encoding.Default.GetBytes(newcontent);
            //开始写入
            fs.Write(data, 0, data.Length);
            //清空缓冲区、关闭流
            fs.Flush();
            fs.Close();
chester·chen | 园豆:507 (小虾三级) | 2018-11-27 09:51

@Luo586484:
这段代码就是新生成文件

chester·chen | 园豆:507 (小虾三级) | 2018-11-27 09:52

@老六代码: 我要的是把这个改动了的TXT文件的名字存到另一个文件里 不是内容存到新的文件里

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 09:57

@Luo586484:

不好意思,没明白你什么意思, 你是要把旧的文件的名字,存到另一个文件里?

chester·chen | 园豆:507 (小虾三级) | 2018-11-27 09:58

@老六代码: 不好意思 可能我没有说清楚 就是假如两个文件 文件一和文件二 文件二改动了 那么把文件二的名字读出来 存到另一个文件里

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 10:01

@老六代码: 这样可以吗

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 10:03

@Luo586484:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
listDirectory(@"C:\Doc");

    }
    static void listDirectory(string path)
    {
        DirectoryInfo root = new DirectoryInfo(path);
        //遍历文件
        foreach (FileInfo NextFile in root.GetFiles())
        {
            if (NextFile.Extension == ".txt")
            {
                StreamReader sr = new StreamReader(NextFile.FullName, Encoding.Default);
                string content = content = sr.ReadToEnd();
                var newcontent = content.Replace("qwer.asdf.zxcv", "aaa");

                string filePath = @"C:\Demo\b.txt";//要写入到的文件
                using (System.IO.StreamWriter file = new System.IO.StreamWriter(filePath, true))
                {
                    file.WriteLine(NextFile.Name);// 直接追加文件末尾,换行 
                }
            }

        }

        //遍历文件夹
        foreach (DirectoryInfo NextFolder in root.GetDirectories())
        {
            listDirectory(NextFolder.FullName);
        }
    }
}

}

chester·chen | 园豆:507 (小虾三级) | 2018-11-27 10:17

那就这样啊,稍微变通一下

chester·chen | 园豆:507 (小虾三级) | 2018-11-27 10:17

@老六代码: 或者说就是读文件夹里所有TXT文件 如果TXT文件里有qwer.asdf.zxcv这句话,则读取这个TXT文件的名字 存入另一个文件里

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 10:17

@老六代码: 等下 我试试

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 10:18

@Luo586484:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
listDirectory(@"C:\Doc");

    }
    static void listDirectory(string path)
    {
        DirectoryInfo root = new DirectoryInfo(path);
        //遍历文件
        foreach (FileInfo NextFile in root.GetFiles())
        {
            if (NextFile.Extension == ".txt")
            {
                StreamReader sr = new StreamReader(NextFile.FullName, Encoding.Default);
                string content = content = sr.ReadToEnd();
                sr.Close();
                if (content.Contains("qwer.asdf.zxcv"))
                {
                    var newcontent = content.Replace("qwer.asdf.zxcv", "aaa");
                    System.IO.File.WriteAllText(NextFile.FullName, newcontent, Encoding.UTF8);

                    string filePath = @"C:\Demo\b.txt";//要写入到的文件
                    using (System.IO.StreamWriter file = new System.IO.StreamWriter(filePath, true))
                    {
                        file.WriteLine(NextFile.Name);// 直接追加文件末尾,换行 
                    }
                }
             
            }

        }

        //遍历文件夹
        foreach (DirectoryInfo NextFolder in root.GetDirectories())
        {
            listDirectory(NextFolder.FullName);
        }
    }
}

}

或者这样,都可以啊

chester·chen | 园豆:507 (小虾三级) | 2018-11-27 10:26

@Luo586484:
我告诉你方法 你自己变通一下就可以了啊 兄弟

chester·chen | 园豆:507 (小虾三级) | 2018-11-27 10:27

@老六代码: 哥 我不会呀 我就是看 了解的 你这个代码是把所有的文件夹名字都存入新文件里了吧 我只要改内容了的文件名

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 10:29

@Luo586484: 我最后给你发的就是把文件名写到新文件了 , 你试一下吧

chester·chen | 园豆:507 (小虾三级) | 2018-11-27 10:31

@老六代码: OK 谢了 老哥

Luo586484 | 园豆:8 (初学一级) | 2018-11-27 10:38

@老六代码: 哥 能问个问题吗

Luo586484 | 园豆:8 (初学一级) | 2018-11-29 14:23
其他回答(2)
0

1、把原文件内容读取出来
2、用正则表达式替换
3、替换后的写入到一个新的文本文件即可

程序员修炼之旅 | 园豆:776 (小虾三级) | 2018-11-27 09:03

思路我了解 但是具体的代码怎么撸啊 我很新手的

支持(0) 反对(0) Luo586484 | 园豆:8 (初学一级) | 2018-11-27 09:07
0

百度关键字:C# 读 写 txt

会长 | 园豆:12401 (专家六级) | 2018-11-27 09:22

会长英明~

支持(0) 反对(0) 徒然喜欢你 | 园豆:1741 (小虾三级) | 2018-11-27 09:27

@徒然喜欢你: 英雄英明略同

支持(0) 反对(0) 会长 | 园豆:12401 (专家六级) | 2018-11-27 10:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册