C# Can';是否将命令行参数与字符串组合?

C# Can';是否将命令行参数与字符串组合?,c#,C#,我正试图从控制台行在指定区域写入文件。(比如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 {

我正试图从控制台行在指定区域写入文件。(比如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#中)

如果您只是从命令行传递
C:
,则需要切换此行

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();
}

您的完整代码是(更改最少):

使用系统;
使用System.Collections.Generic;
使用System.IO;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
命名空间控制台应用程序1
{
班级计划
{
公共静态void Main(字符串[]args)
{
字符串arg1=null;
如果(args.Length>0)
arg1=args[0];
控制台写入线(arg1);
控制台写入线(args);
字符串tf=“\tf1.txt”;
字符串tf1=arg1+tf;
控制台写入线(tf1);
System.Console.Title=“数据加法器(用于测试)”;
随机rnd=新随机();
int r1=rnd.Next(0,20);
字节[]字节=新字节[255*r1];
for(int i=0;i
我可以看出您在这里使用了反斜杠

string tf = "\tf1.txt";
但不是在这里

var TF1 = new BinaryWriter(File.Open(@arg1+"tf1.txt",FileMode.Open));

值得您仔细阅读代码,看看值是什么。

生成文件路径时要小心。使用Path.Combine而不是字符串连接。

是否在调试器中运行它?抛出了什么异常?当您输出它时,
arg1
是什么?如果程序崩溃,会显示什么错误消息?在IDE中单步执行程序并告诉我们哪一行崩溃了如何?那么您是否检查了
@arg1+“tf1.txt”
的实际值?您是否验证了所述值是否实际指向有效文件?即链接+tf1.txt,我添加了一个“\”,现在缺少t,因此仍然找不到该文件,这是一个测试。仍然有缺陷。“\”也是非法字符。“\”是非法字符。您是否将
@
放在字符串前面?嗯,是否有错误?代码对我来说编译和运行都很好。如果您将
c:
作为命令行传递,我发布了适用于我的完整代码。我确实编写了0,因为数组未初始化。我修改了上面的代码,将数组初始化为“A”字符。但是,让我们在那个阶段完成这个问题,因为原来的问题已经解决了。如果您有更多问题,请分别提问。堆栈溢出的工作方式是:一个问题中有一个问题。Path.combine生成的C:tf1.txt,我不能使用“\”因为它是非法字符。
string tf = "\tf1.txt";
var TF1 = new BinaryWriter(File.Open(@arg1+"tf1.txt",FileMode.Open));