编写一个可以读一个文件夹里的所有TXT文件,然后改TXT里的某个固定词,把改了的TXT文件名写到另一个文件里
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);
}
}
}
}
我还没有试 你这个能把改了的TXT文件名存到另一个文件里吗 好像不可以吧
@Luo586484: 可以
@老六代码: 等我一下
@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();
这一段就是写入新文件
@老六代码: 好的 你这个是只能改词吗 就是可以改一句话或者一段符号吗 比如qwer.asdf.zxcv
@Luo586484:
var newcontent = content.Replace("qwer.asdf.zxcv", "aaa");
这样修改字符串
@老六代码: 还有最后一点问题 就是我是要改了的TXT文件从新存一个文件 你这个是存入当前文件 还把名字改了 我就是要这个名字呀
@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();
@Luo586484:
这段代码就是新生成文件
@老六代码: 我要的是把这个改动了的TXT文件的名字存到另一个文件里 不是内容存到新的文件里
@Luo586484:
不好意思,没明白你什么意思, 你是要把旧的文件的名字,存到另一个文件里?
@老六代码: 不好意思 可能我没有说清楚 就是假如两个文件 文件一和文件二 文件二改动了 那么把文件二的名字读出来 存到另一个文件里
@老六代码: 这样可以吗
@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);
}
}
}
}
那就这样啊,稍微变通一下
@老六代码: 或者说就是读文件夹里所有TXT文件 如果TXT文件里有qwer.asdf.zxcv这句话,则读取这个TXT文件的名字 存入另一个文件里
@老六代码: 等下 我试试
@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);
}
}
}
}
或者这样,都可以啊
@Luo586484:
我告诉你方法 你自己变通一下就可以了啊 兄弟
@老六代码: 哥 我不会呀 我就是看 了解的 你这个代码是把所有的文件夹名字都存入新文件里了吧 我只要改内容了的文件名
@Luo586484: 我最后给你发的就是把文件名写到新文件了 , 你试一下吧
@老六代码: OK 谢了 老哥
@老六代码: 哥 能问个问题吗
1、把原文件内容读取出来
2、用正则表达式替换
3、替换后的写入到一个新的文本文件即可
思路我了解 但是具体的代码怎么撸啊 我很新手的
百度关键字:C# 读 写 txt
会长英明~
@徒然喜欢你: 英雄英明略同