我有一個自動生成的文本檔案(obj 檔案)。
它看起來像這樣:
# File generated by IfcOpenShell v0.7.0-e508fb44
g 2O2Fr$t4X7Zf8NOew3FNtn
s 1
v 0 -0.417 0
v 0 -5.55111512312578e-17 0
v 2.63496916504281 -5.55111512312578e-17 0
v 2.63496916504281 -0.417 0
v 2.63496916504281 -0.417 0
v 2.63496916504281 -5.55111512312578e-17 0
v 2.63496916504281 -5.55111512312578e-17 2.42
v 2.63496916504281 -0.417 2.42
...
我需要mtllib ./model_0.mtl在檔案的開頭插入字串。由于第一行始終是評論,我想我可以像這樣覆寫它。
# File generated by IfcOpenShell v0.7.0-e508fb44
mtllib ./model_0.mtl
問題是我不知道如何實作這一點,如何以特殊方式打開檔案?我想避免在更改幾個字符并將整個檔案寫出時讀取整個檔案..
這很相似,但似乎沒有太大幫助(我正在使用 c#) 文本檔案 C 編輯第一行
uj5u.com熱心網友回復:
您可以嘗試使用Linq;如果檔案不是那么大
using System.IO;
using System.Linq;
...
string fileName = @"c:\myFile.txt";
var newLines = new string[] {"mtllib ./model_0.mtl"} // first line
.Concat(File
.ReadLines(fileName) // all file
.Skip(1)) // except the very first line
.ToList();
File.WriteAllLines(fileName, newLines);
如果檔案很大,所以.ToList()-物化- 不是一個好的選擇,我們可以保存檔案然后重命名它:
using System.IO;
using System.Linq;
...
string fileName = @"c:\myFile.txt";
var newLines = new string[] {"mtllib ./model_0.mtl"} // first line
.Concat(File
.ReadLines(fileName) // all file
.Skip(1)); // except the very first line
// Save under different name
File.WriteAllLines(fileName "~", newLines);
File.Move(fileName "~", fileName, true);
uj5u.com熱心網友回復:
如果檔案不是太大,只需使用
string[] lines = File.ReadAllLines(path);
lines[0] = "mtllib ./model_0.mtl"; // you might want to check if lines.Length > 0
File.WriteAllLines(path, lines);
uj5u.com熱心網友回復:
String newLine="mtllib ./model_0.mtl" ;
string content = File.ReadAllText(Path);
content = newLine "\n" content;
File.WriteAllText(Path, content);
uj5u.com熱心網友回復:
這對我有用
byte[] mtlPathBytes = Encoding.UTF8.GetBytes($"mtllib ./model_{modelId}.mtl\n#");
using (FileStream fs = File.Open(objPath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
fs.Write(mtlPathBytes, 0, mtlPathBytes.Length);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/517308.html
標籤:C#细绳文件覆盖
上一篇:從C#中的元組串列中查找下一個值
