2017-08-04 6 views
1

少し問題があります。次のコードでは、ファイルとNetworkstreamからのファイルの終わりを受信します。その後、Fileは私が受け取ったパスの下に保存されます。たびにコードを実行すると、path.getinvalidpathcharsの例外が発生します。ここに短いコードの例を示します。の問題いくつかの文字列からパスを作成する#

 ns.Read(ending,0,1212); 
     string endung = "saved." + Encoding.UTF8.GetString(ending); 
     string path = Path.Combine(@"c:\users\user\desktop\" , endung); 
     Console.WriteLine(path); 
     File.WriteAllBytes(path ,file); 

バイト配列フ​​ァイルは、受信したファイルのバイト配列です。完全パスはc:\users\user\desktop\saved.で残りは(txt、jpg、exe)はchangebelでなければなりません。つまり、sas "exe" c:\users\user\desktop\saved.exeなどのように、受信した文字列sas "txt"がパスになる必要があります。

+0

「Console.WriteLine(path);」は何を出力しますか? – Rahul

+0

'path.getinvalidpathchars'はおそらく無効な文字なので、' c:\ users \ user \ desktop \ 'だけでなく、完全なパスは – EpicKip

+0

' Encoding.UTF8.GetString(ending) 'は無効なファイル名を出力していると仮定していますchars。そのメソッドの結果を確認してください –

答えて

0

私はStreamReaderでこの問題を解決しました!

 //byte[] file = File.ReadAllBytes(@"c:\users\user\desktop\file.txt"); 
     TcpListener listen = new TcpListener(IPAddress.Parse(mes),223); 
     listen.Start(); 
     TcpClient client = listen.AcceptTcpClient(); 
     NetworkStream ns = client.GetStream(); 
     StreamReader sre = new StreamReader(ns); 
     string ende = sre.ReadLine(); 
     string path = Path.Combine(@"c:\users\user\desktop\file2." + ende); 
     Console.WriteLine(path); 
     File.WriteAllBytes(path ,file); 
     listen.Stop(); 
関連する問題