我试图逐行复制其他文本文件中的文本文件.似乎有1024个字符的缓冲区.如果我的文件中的字符少于1024个,我的功能将不会复制到另一个文件中.
此外,如果超过1024个字符但少于1024个系数,则不会复制这些超出的字符.
例如:
初始文件中有2048个字符 - 复制了2048个字符
初始文件中有988个字符 - 0已复制
初始文件中有1256个字符 - 1024个已复制
private void button3_Click(object sender, EventArgs e)
{
// écrire code pour reprendre le nom du fichier sélectionné et
//ajouter un suffix "_poly.txt"
string ma_ligne;
const int RMV_CARCT = 9;
//délcaration des fichier
FileStream apt_file = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read);
textBox1.Text = textBox1.Text.Replace(".txt", "_mod.txt");
FileStream mdi_file = new FileStream(textBox1.Text, FileMode.OpenOrCreate,FileAccess.ReadWrite);
//lecture/ecriture des fichiers en question
StreamReader apt = new StreamReader(apt_file);
StreamWriter mdi_line = new StreamWriter(mdi_file, System.Text.Encoding.UTF8, 16);
while (apt.Peek() >= 0)
{
ma_ligne = apt.ReadLine();
//if (ma_ligne.StartsWith("GOTO"))
//{
// ma_ligne = ma_ligne.Remove(0, RMV_CARCT);
// ma_ligne = ma_ligne.Replace(" ","");
// ma_ligne = ma_ligne.Replace(",", " ");
mdi_line.WriteLine(ma_ligne);
//}
}
apt_file.Close();
mdi_file.Close();
}
Run Code Online (Sandbox Code Playgroud)
两个问题:
FileStream,StreamWriter和StreamReader类应该在using { }块内.它们实现IDisposable,所以你需要调用Dispose,using块就会为你做.如果你这样做,那就是你必须解决的问题(我将在一分钟内解释).这样做也意味着您不再需要打电话Close().mdi_line.Flush()在关闭之前打电话.这将导致缓冲区立即写入文件.调用Dispose的StreamWriter类autmatically调用Flush,这就是为什么using块将解决这个问题.
using (FileStream apt_file = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read))
{
textBox1.Text = textBox1.Text.Replace(".txt", "_mod.txt");
using (FileStream mdi_file = new FileStream(textBox1.Text, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
//lecture/ecriture des fichiers en question
using (StreamReader apt = new StreamReader(apt_file))
using (StreamWriter mdi_line = new StreamWriter(mdi_file, System.Text.Encoding.UTF8, 16))
{
while (apt.Peek() >= 0)
{
ma_ligne = apt.ReadLine();
//if (ma_ligne.StartsWith("GOTO"))
//{
// ma_ligne = ma_ligne.Remove(0, RMV_CARCT);
// ma_ligne = ma_ligne.Replace(" ","");
// ma_ligne = ma_ligne.Replace(",", " ");
mdi_line.WriteLine(ma_ligne);
//}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2428 次 |
| 最近记录: |