Cannot Resolve Path Error
-
I wrote this small program from an example in the C# book and it compile fine, but gives a path error for the file that I am reading. I created an external file at c:\tempPath Can someone please advise? Thanks. using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplicationTEST2 { class Program { static void Main(string[] args) { string tempPath = Path.GetTempFileName(); string tempPath2 = Path.GetTempFileName(); if (File.Exists(tempPath)) { byte[] data = File.ReadAllBytes("c:\tempPath"); File.WriteAllBytes(tempPath2, data); Console.WriteLine("First byte: {0}", data[0]); Console.WriteLine("Last byte: {0}", data[data.Length]); Console.WriteLine(data.Length); } } } } OUTPUT: Unhandled Exception: System.ArgumentException: Illegal characters in path. at System.IO.Path.CheckInvalidPathChars(String path) at System.IO.Path.GetFileName(String path) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.ReadAllBytes(String path) at ConsoleApplicationTEST2.Program.Main(String[] args) in C:\Users\computerpu blic\Desktop\ConsoleApplicationTEST2\ConsoleApplicationTEST2\Program.cs:line 20 Press any key to continue . . .
-
I wrote this small program from an example in the C# book and it compile fine, but gives a path error for the file that I am reading. I created an external file at c:\tempPath Can someone please advise? Thanks. using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplicationTEST2 { class Program { static void Main(string[] args) { string tempPath = Path.GetTempFileName(); string tempPath2 = Path.GetTempFileName(); if (File.Exists(tempPath)) { byte[] data = File.ReadAllBytes("c:\tempPath"); File.WriteAllBytes(tempPath2, data); Console.WriteLine("First byte: {0}", data[0]); Console.WriteLine("Last byte: {0}", data[data.Length]); Console.WriteLine(data.Length); } } } } OUTPUT: Unhandled Exception: System.ArgumentException: Illegal characters in path. at System.IO.Path.CheckInvalidPathChars(String path) at System.IO.Path.GetFileName(String path) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.ReadAllBytes(String path) at ConsoleApplicationTEST2.Program.Main(String[] args) in C:\Users\computerpu blic\Desktop\ConsoleApplicationTEST2\ConsoleApplicationTEST2\Program.cs:line 20 Press any key to continue . . .
You need to learn about character escaping in strings.
computerpublic wrote:
byte[] data = File.ReadAllBytes("c:\tempPath");
That string is (shown 1 character per line for clarity)
c
:
tab character (\t)
e
m
p
P
a
t
hWhat you probably mean is
"c:\\tempPath"
. While you are at it, read up onUnicode
. PeterSoftware rusts. Simon Stephenson, ca 1994.
-
I wrote this small program from an example in the C# book and it compile fine, but gives a path error for the file that I am reading. I created an external file at c:\tempPath Can someone please advise? Thanks. using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplicationTEST2 { class Program { static void Main(string[] args) { string tempPath = Path.GetTempFileName(); string tempPath2 = Path.GetTempFileName(); if (File.Exists(tempPath)) { byte[] data = File.ReadAllBytes("c:\tempPath"); File.WriteAllBytes(tempPath2, data); Console.WriteLine("First byte: {0}", data[0]); Console.WriteLine("Last byte: {0}", data[data.Length]); Console.WriteLine(data.Length); } } } } OUTPUT: Unhandled Exception: System.ArgumentException: Illegal characters in path. at System.IO.Path.CheckInvalidPathChars(String path) at System.IO.Path.GetFileName(String path) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.ReadAllBytes(String path) at ConsoleApplicationTEST2.Program.Main(String[] args) in C:\Users\computerpu blic\Desktop\ConsoleApplicationTEST2\ConsoleApplicationTEST2\Program.cs:line 20 Press any key to continue . . .
Yeah, what he said. Or you could use a verbatim string --
@"c:\tempPath"
. -
I wrote this small program from an example in the C# book and it compile fine, but gives a path error for the file that I am reading. I created an external file at c:\tempPath Can someone please advise? Thanks. using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplicationTEST2 { class Program { static void Main(string[] args) { string tempPath = Path.GetTempFileName(); string tempPath2 = Path.GetTempFileName(); if (File.Exists(tempPath)) { byte[] data = File.ReadAllBytes("c:\tempPath"); File.WriteAllBytes(tempPath2, data); Console.WriteLine("First byte: {0}", data[0]); Console.WriteLine("Last byte: {0}", data[data.Length]); Console.WriteLine(data.Length); } } } } OUTPUT: Unhandled Exception: System.ArgumentException: Illegal characters in path. at System.IO.Path.CheckInvalidPathChars(String path) at System.IO.Path.GetFileName(String path) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.ReadAllBytes(String path) at ConsoleApplicationTEST2.Program.Main(String[] args) in C:\Users\computerpu blic\Desktop\ConsoleApplicationTEST2\ConsoleApplicationTEST2\Program.cs:line 20 Press any key to continue . . .
-
BobJanova wrote:
.Net allows the separator to go either way.
There are soooooo many jokes just crawling all over that statement.
*pre-emptive celebratory nipple tassle jiggle* - Sean Ewington
"Mind bleach! Send me mind bleach!" - Nagy Vilmos
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
-
BobJanova wrote:
.Net allows the separator to go either way.
There are soooooo many jokes just crawling all over that statement.
*pre-emptive celebratory nipple tassle jiggle* - Sean Ewington
"Mind bleach! Send me mind bleach!" - Nagy Vilmos
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
-
BobJanova wrote:
Yes, but this is a serious forum,
Is it? Good gravy man, that's news to me.
*pre-emptive celebratory nipple tassle jiggle* - Sean Ewington
"Mind bleach! Send me mind bleach!" - Nagy Vilmos
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
-
You need to learn about character escaping in strings.
computerpublic wrote:
byte[] data = File.ReadAllBytes("c:\tempPath");
That string is (shown 1 character per line for clarity)
c
:
tab character (\t)
e
m
p
P
a
t
hWhat you probably mean is
"c:\\tempPath"
. While you are at it, read up onUnicode
. PeterSoftware rusts. Simon Stephenson, ca 1994.
Peter, When I make it ("C:\\tempPath", it gives me the following error: Unhandled Exception: System.IO.FileNotFoundException: Could not find file 'c:\te mpPath'. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, I nt32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions o ptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolea n useLongPath) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.ReadAllBytes(String path) at ConsoleApplicationTEST2.Program.Main(String[] args) in C:\Users\computerpu blic\Desktop\ConsoleApplicationTEST2\ConsoleApplicationTEST2\Program.cs:line 18 Press any key to continue . . .
-
I wrote this small program from an example in the C# book and it compile fine, but gives a path error for the file that I am reading. I created an external file at c:\tempPath Can someone please advise? Thanks. using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplicationTEST2 { class Program { static void Main(string[] args) { string tempPath = Path.GetTempFileName(); string tempPath2 = Path.GetTempFileName(); if (File.Exists(tempPath)) { byte[] data = File.ReadAllBytes("c:\tempPath"); File.WriteAllBytes(tempPath2, data); Console.WriteLine("First byte: {0}", data[0]); Console.WriteLine("Last byte: {0}", data[data.Length]); Console.WriteLine(data.Length); } } } } OUTPUT: Unhandled Exception: System.ArgumentException: Illegal characters in path. at System.IO.Path.CheckInvalidPathChars(String path) at System.IO.Path.GetFileName(String path) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.ReadAllBytes(String path) at ConsoleApplicationTEST2.Program.Main(String[] args) in C:\Users\computerpu blic\Desktop\ConsoleApplicationTEST2\ConsoleApplicationTEST2\Program.cs:line 20 Press any key to continue . . .
It looks like you want to 'copy' a file from one directory to another. You give it 2 arguments: source and destination. correct? In that case I would rather go for:
byte[] data = File.ReadAllBytes(tempPath);
"C:\tempPath" denotes a directory ,not a file. PS: note that the other comments are valid, the \ backslash character needs to be escaped as follows.
"C:\\tempPath\\"
//or
@"C:\tempPath\"
//I would not use this: "C:/tempPath/", the / character is used in URL's and might work confusing.Another thing is see going wrong is this line:
Console.WriteLine("Last byte: {0}", data[data.Length]);
//it should be
Console.WriteLine("Last byte: {0}", data[data.Length-1]);
//or it will give you an IndexOutOfBounsExceptionHope this helps.
V.
-
I wrote this small program from an example in the C# book and it compile fine, but gives a path error for the file that I am reading. I created an external file at c:\tempPath Can someone please advise? Thanks. using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplicationTEST2 { class Program { static void Main(string[] args) { string tempPath = Path.GetTempFileName(); string tempPath2 = Path.GetTempFileName(); if (File.Exists(tempPath)) { byte[] data = File.ReadAllBytes("c:\tempPath"); File.WriteAllBytes(tempPath2, data); Console.WriteLine("First byte: {0}", data[0]); Console.WriteLine("Last byte: {0}", data[data.Length]); Console.WriteLine(data.Length); } } } } OUTPUT: Unhandled Exception: System.ArgumentException: Illegal characters in path. at System.IO.Path.CheckInvalidPathChars(String path) at System.IO.Path.GetFileName(String path) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.ReadAllBytes(String path) at ConsoleApplicationTEST2.Program.Main(String[] args) in C:\Users\computerpu blic\Desktop\ConsoleApplicationTEST2\ConsoleApplicationTEST2\Program.cs:line 20 Press any key to continue . . .
computerpublic wrote:
static void Main(string[] args)
string tempPath = Path.GetTempFileName();
string tempPath2 = Path.GetTempFileName();
if (File.Exists(tempPath))
{
byte[] data = File.ReadAllBytes("c:\tempPath");Oh my. 1. As Path.GetTempFileName() tries to provide you with a randomly chosen file name in order NOT to clash with existing files, how on earth do you expect File.Exists() to ever return true? 2. Code should be put inside PRE tags, to preserve formatting and improve readability. 3. And if there is some code sitting in between both method calls, you really should have indicated so. 4. There is absolutely no relation between a variable called tempPath, and a file path with the value @"C:\tempPath". Did you skip your morning coffee? :confused:
Luc Pattyn [My Articles] Nil Volentibus Arduum
-
Peter, When I make it ("C:\\tempPath", it gives me the following error: Unhandled Exception: System.IO.FileNotFoundException: Could not find file 'c:\te mpPath'. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, I nt32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions o ptions, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolea n useLongPath) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at System.IO.File.ReadAllBytes(String path) at ConsoleApplicationTEST2.Program.Main(String[] args) in C:\Users\computerpu blic\Desktop\ConsoleApplicationTEST2\ConsoleApplicationTEST2\Program.cs:line 18 Press any key to continue . . .
-
computerpublic wrote:
static void Main(string[] args)
string tempPath = Path.GetTempFileName();
string tempPath2 = Path.GetTempFileName();
if (File.Exists(tempPath))
{
byte[] data = File.ReadAllBytes("c:\tempPath");Oh my. 1. As Path.GetTempFileName() tries to provide you with a randomly chosen file name in order NOT to clash with existing files, how on earth do you expect File.Exists() to ever return true? 2. Code should be put inside PRE tags, to preserve formatting and improve readability. 3. And if there is some code sitting in between both method calls, you really should have indicated so. 4. There is absolutely no relation between a variable called tempPath, and a file path with the value @"C:\tempPath". Did you skip your morning coffee? :confused:
Luc Pattyn [My Articles] Nil Volentibus Arduum
I changed the file name to "c:\\temp" and it still does not work.
-
I changed the file name to "c:\\temp" and it still does not work.
The file name is stored in your variable
tempFile
. Why are you giving it a string literal that says "C:\tempFile"? Trybyte[] fileData = File.ReadAllBytes(tempFile);
The difficult we do right away... ...the impossible takes slightly longer.
-
You need to learn about character escaping in strings.
computerpublic wrote:
byte[] data = File.ReadAllBytes("c:\tempPath");
That string is (shown 1 character per line for clarity)
c
:
tab character (\t)
e
m
p
P
a
t
hWhat you probably mean is
"c:\\tempPath"
. While you are at it, read up onUnicode
. PeterSoftware rusts. Simon Stephenson, ca 1994.
5! :thumbsup:
-
Yeah, what he said. Or you could use a verbatim string --
@"c:\tempPath"
.5! :thumbsup:
-
computerpublic wrote:
static void Main(string[] args)
string tempPath = Path.GetTempFileName();
string tempPath2 = Path.GetTempFileName();
if (File.Exists(tempPath))
{
byte[] data = File.ReadAllBytes("c:\tempPath");Oh my. 1. As Path.GetTempFileName() tries to provide you with a randomly chosen file name in order NOT to clash with existing files, how on earth do you expect File.Exists() to ever return true? 2. Code should be put inside PRE tags, to preserve formatting and improve readability. 3. And if there is some code sitting in between both method calls, you really should have indicated so. 4. There is absolutely no relation between a variable called tempPath, and a file path with the value @"C:\tempPath". Did you skip your morning coffee? :confused:
Luc Pattyn [My Articles] Nil Volentibus Arduum
5! :thumbsup: