这段代码只是保存我的字符串数组的最后一行。我想将matricula_conc的所有行保存在文本文件(txt)中。
我不知道该怎么办,我该如何解决?有人知道吗?
class DesafioPuc
{
public static void Main(string[] args)
{
foreach (string line in File.ReadLines("matriculasSemDV.txt"))
{
int m_1 = Convert.ToInt32(line.Substring(0, 1)); //1st digit
int m_2 = Convert.ToInt32(line.Substring(1, 1)); //2nd digit
int m_3 = Convert.ToInt32(line.Substring(2, 1)); //3rd digit
int m_4 = Convert.ToInt32(line.Substring(3, 1)); //4th digit
int mult_m1 = m_1 * 5;
int mult_m2 = m_2 * 4;
int mult_m3 = m_3 * 3;
int mult_m4 = m_4 * 2;
int final_sum = mult_m1 + mult_m2 + mult_m3 + mult_m4;
int rest_div = final_sum % 16;
string rest_div_hex = rest_div.ToString("X");
string matricula_conc = line + "-" + rest_div_hex;
string[] b = {matricula_conc};
string path = "matriculasComDV.txt";
File.WriteAllLines(path, b, Encoding.UTF8);
}
}
}
答案 0 :(得分:1)
请考虑使用流来读取/写入各个行,以避免将所有内容保留在内存中。
android:layout_toLeftOf="@{value.getUnit().equals(@string/mb)?@id/lyt_value:@id/lyt_value2}"
答案 1 :(得分:0)
File.WriteAllLines方法,创建一个新文件,将指定的字符串数组写入该文件,然后关闭该文件。如果目标文件已存在,则将其覆盖。这就是为什么只在文件中打印最后一行的原因。对于File.WriteAllLines(path, b, Encoding.UTF8);
,请在上面的代码中使用File.AppendAllLines(path, b, Encoding.UTF8);
以打印所有行。但是最好的方法是使用如下列表:
List<string> LinesToWrite = new List<string>();
foreach (string line in File.ReadLines("matriculasSemDV.txt"))
{
// Your logic here
string rest_div_hex = rest_div.ToString("X");
string matricula_conc = line + "-" + rest_div_hex;
LinesToWrite.Add(matricula_conc);
}
string path = "matriculasComDV.txt";
File.WriteAllLines(path, LinesToWrite , Encoding.UTF8);
答案 2 :(得分:-1)
我解决了这个问题。但是非常感谢您的建议。
下面是我用的。
class DesafioPuc
{
public static void Main(string[] args)
{
Console.WriteLine("-----matriculasComDV-----"); //Print em tela do nome_arquivo matriculasComDV.txt (meramente ilustrativo)
foreach (string line in File.ReadLines("matriculasSemDV.txt"))
{
int m_1 = Convert.ToInt32(line.Substring(0, 1)); //1st digits array
int m_2 = Convert.ToInt32(line.Substring(1, 1)); //2nd digits array
int m_3 = Convert.ToInt32(line.Substring(2, 1)); //3rd digits array
int m_4 = Convert.ToInt32(line.Substring(3, 1)); //4th digits array
int mult_m1 = m_1 * 5; //Multiplica o vetor de 1st digits por 5
int mult_m2 = m_2 * 4; //Multiplica o vetor de 2nd digits por 4
int mult_m3 = m_3 * 3; //Multiplica o vetor de 3rd digits por 3
int mult_m4 = m_4 * 2; //Multiplica o vetor de 4th digits por 2
int final_sum = mult_m1 + mult_m2 + mult_m3 + mult_m4; //soma os vetores dos digitos a fim de calcular o total
int rest_div = final_sum % 16; //resto da divisão do vetor final_sum por 16
string rest_div_hex = rest_div.ToString("X"); //converte o vetor resto de decimal para hexadecimal
string matricula_conc = line + "-" + rest_div_hex; //concatena linha a linha o vetor matriculasSemDV com "-" e o resto da divisao em hexadecimal
File.AppendAllText("matriculasComDV.txt", matricula_conc + Environment.NewLine); //salva o vetor concatenado
Console.WriteLine(matricula_conc); //print em tela do arquivo matriculasComDV.txt concatenado (meramente ilustrativo)
}
Console.WriteLine("-----matriculasVerificadas-----"); //Print em tela do nome_arquivo matriculasVerificadas.txt (meramente ilustrativo)
string matriculasComDV = File.ReadAllText("matriculasComDV.txt"); //atribui o arquivo matriculasComDV gerado acima para um vetor de string
foreach (string line in File.ReadLines("matriculasParaVerificar.txt")) //para cada linha no vetor matriculasParaVerificar, faça:
{
if (line.Contains(matriculasComDV)) //compara linha a linha se o vetor matriculasParaVerificar contém alguma stringo do vetor matriculasComDV
{
string concatena_verdadeiro = line + " verdadeiro"; //concatena as linhas do vetor matriculasParaVerificar com o devido indicador
Console.WriteLine(concatena_verdadeiro); //print em tela do vetor caso a condição seja satisfeita (meramente ilustrativo)
File.AppendAllText("matriculasVerificadas.txt", concatena_verdadeiro + Environment.NewLine); //salva o arquivo concatenado em matriculasVerificadas.txt
}
else //senão...
{
string concatena_falso = line + " falso"; //concatena as linhas do vetor matriculasParaVerificar com o devido indicador
Console.WriteLine(concatena_falso); //print em tela do vetor caso a condição seja satisfeita (meramente ilustrativo)
File.AppendAllText("matriculasVerificadas.txt", concatena_falso + Environment.NewLine); //salva o arquivo concatenado em matriculasVerificadas.txt
}
}
}
}