我正在尝试从控制台行写入指定区域中的文件。 (喜欢C :) 当我发布并运行其.exe时,应用程序崩溃 我的代码是:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
public static void Main(string[] args)
{
string arg1 = null;
if (args.Length > 0)
arg1 = args[0];
Console.WriteLine(arg1);
Console.WriteLine(args);
string tf = "\tf1.txt";
string tf1 = arg1 + tf;
Console.WriteLine(tf1);
System.Console.Title = "Data Adder (For the test)";
Random rnd = new Random();
int r1 = rnd.Next(0, 20);
byte[] bytes = new byte[255*r1];
var TF1 = new BinaryWriter(File.Open(@arg1+"tf1.txt",FileMode.Open));
TF1.Write(bytes);
TF1.Close();
Console.ReadKey();
}
private static int Random(int p1, int p2)
{
throw new NotImplementedException();
}
}
}
谁知道什么是错的? (它在C#中)
答案 0 :(得分:1)
生成文件路径时要小心。使用Path.Combine而不是字符串连接。
答案 1 :(得分:0)
如果您只是从命令行传递C:
,则需要切换此行
var TF1 = new BinaryWriter(File.Open(@arg1+"tf1.txt",FileMode.Open));
到
var TF1 = new BinaryWriter(File.Open(arg1+@"\tf1.txt",FileMode.Open));
或路径无效C:tf1.txt
此外,您应该在打开文件之前检查文件是否存在:
if (File.Exists(arg1 + @"\tf1.txt"))
{
var TF1 = new BinaryWriter(File.Open(arg1 + @"\tf1.txt", FileMode.Open));
TF1.Write(bytes);
TF1.Close();
}
您的完整代码是(只需极少的更改):
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
public static void Main(string[] args)
{
string arg1 = null;
if (args.Length > 0)
arg1 = args[0];
Console.WriteLine(arg1);
Console.WriteLine(args);
string tf = "\tf1.txt";
string tf1 = arg1 + tf;
Console.WriteLine(tf1);
System.Console.Title = "Data Adder (For the test)";
Random rnd = new Random();
int r1 = rnd.Next(0, 20);
byte[] bytes = new byte[255 * r1];
for (int i = 0; i < bytes.Length; i++)
bytes[i] = 65;
string filepath = Path.Combine(arg1, @"\tf1.txt");
if (File.Exists(filepath))
{
var TF1 = new BinaryWriter(File.Open(filepath, FileMode.Open));
TF1.Write(bytes);
TF1.Close();
}
Console.ReadKey();
}
private static int Random(int p1, int p2)
{
throw new NotImplementedException();
}
}
}
答案 2 :(得分:0)
我可以看到你在这里使用反斜杠......
string tf = "\tf1.txt";
但不在这里......
var TF1 = new BinaryWriter(File.Open(@arg1+"tf1.txt",FileMode.Open));
值得您逐步完成代码并查看值是什么。