|
The loop, I think, has everything to do with the file. How else would I know what email files are in each directory?
For each *email.txt file in the directories specified do this
{
If the file exists in the directory, move it
}
{
If the file does NOT exist, create it
}
^ so for each file it sees in the string, it should be doing this.
So if I have this structure:
(Folder) (Email Exists?)
1 Y
2 Y
3 N
4 N
5 Y
the intent is to move the file from folder 1 to folder 1\Archive, then create a new one, same for folder 2, then folder 3 doesn't have one so it just creates it, nothing to backup there. Repeat for 4. then backup the file in folder 5 to folder 5\Archive.
Hope that helps with my logic.
|
|
|
|
|
Yes, but look at the code inside the loop. It changes nothing, but uses the same path and file names every time round, nor does it use the content of the item taken from the list.
Use the best guess
|
|
|
|
|
Richard I really appreciate you pointing me in the right direction, I took another look at my logic and you're right, it didn't make sense. It sounded good in my head, but I drew it out on paper to see what I was actually trying to accomplish and it didn't work. So here's what I did, and I am getting the looping result I am after, and I think I can go from here. Take a look.
same strings as above, plus this, different for each
foreach (string file in settingsFiles)
{
IniFile ini = new IniFile(file);
string settingNum = ini.IniReadValue("info", "settingNumber");
if (file.Contains(settingNum))
{
MessageBox.Show("This is setting number: " + settingNum);
continue;
}
}
I have a file call setting.ini and in each I have the category [info] and a generic setting called settingNumber. NOW on form load it does a message box that says "This is setting number: 1, then 2, then 3, then 4. Now to just play with it to do a check to see if the email file exists, if it does, move it, then it will create an email file for each direcotory that contains a settings file. Thanks! This is the best way to learn, being pointed in the right direction, by someone who isn't an a**hole haha. I haven't really had any experiences myself, but sometimes when I use my good friend google, you see some of the responses people give and they are just straight up buttheads. Thanks again :P
|
|
|
|
|
and the finished product! It needs some cleaning up, but for functionalities sake, I am happy with it. Thanks again.
foreach (string file in settingsFiles)
{
IniFile ini = new IniFile(file);
string settingNum = ini.IniReadValue("info", "settingNumber");
if (file.Contains(settingNum))
{
if (File.Exists(@"C:\Nightly\Institutions\" + settingNum + "\\" + settingNum + email))
{
MessageBox.Show("The file Exists for: " + settingNum);
File.Move(@"C:\Nightly\Institutions\" + settingNum + "\\" + settingNum + email, @"C:\Nightly\Institutions\" + settingNum + "\\Archive\\" + Parameters.DateOrTime.fileDate.ToString(Parameters.DateOrTime.formatFileDate) + " - " + settingNum + email);
}
using (File.Create(@"C:\Nightly\Institutions\" + settingNum + "\\" + settingNum + email)) { }
}
}
so a little background on what this does - it checks to see if a file already exists, if it does it will move it to the archive folder in the directory the file is located, and renames it to today's date - email.txt. Then it recreates a blank email to be written to in the future.
|
|
|
|
|
Makes a lot more sense.
Use the best guess
|
|
|
|
|
string[] files = GetFileList();
foreach (string file in files)
{
Download(file);
}
public string[] GetFileList()
{
string[] downloadFiles;
StringBuilder result = new StringBuilder();
WebResponse response = null;
StreamReader reader = null;
try
{
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/"));
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
reqFTP.Proxy = null;
reqFTP.KeepAlive = false;
reqFTP.UsePassive = false;
response = reqFTP.GetResponse();
reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
// to remove the trailing '\n'
result.Remove(result.ToString().LastIndexOf('\n'), 1);
return result.ToString().Split('\n');
}
catch (Exception ex)
{
if (reader != null)
{
reader.Close();
}
if (response != null)
{
response.Close();
}
downloadFiles = null;
return downloadFiles;
}
}
private void Download(string file)
{
try
{
string uri = "ftp://" + ftpServerIP + "/" + remoteDir + "/" + file;
Uri serverUri = new Uri(uri);
if (serverUri.Scheme != Uri.UriSchemeFtp)
{
return;
}
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + remoteDir + "/" + file));
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;
reqFTP.Proxy = null;
reqFTP.UsePassive = false;
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
Stream responseStream = response.GetResponseStream();
FileStream writeStream = new FileStream(localDestnDir + "\" + file, FileMode.Create);
int Length = 2048;
Byte[] buffer = new Byte[Length];
int bytesRead = responseStream.Read(buffer, 0, Length);
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = responseStream.Read(buffer, 0, Length);
}
writeStream.Close();
response.Close();
}
catch (WebException wEx)
{
MessageBox.Show(wEx.Message, "Download Error");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Download Error");
}
}
|
|
|
|
|
|
Have a look at my article Application Auto-update via Online Files in C#[^] where I implement a progress bar showing the progress of a file download.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|
|
can any one tell is jabber. i want to develop a chat client but i do not want to develop any server end but i want that my clients can talk to other client in same group. outer client will not be expose.
i want to develop chat client which can transfer multiple from one end to other end and also will be capable to transfer image data in form of stream. i hard the jabber client is capable of doing chat and there are already many jabber server so i do not need to maintain my own.
so guide me how i can develop chat client with jabber as a result two user can communicate each other and transfer file and send stream of data from one end to another end. thanks
tbhattacharjee
|
|
|
|
|
Tridip Bhattacharjee wrote: can any one tell is jabber I can't but this guy[^] can.
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|
|
Serverless?? So how are you going to tell the client what other client to connect to??
Servers are in place to make it easy for a client to identify and connect to another client without having to type in complicated DNS names or IP addresses and ports. If you really want your users to type that stuff in, great, have at it.
|
|
|
|
|
i said i will not develop server end. i heard jabber has server.so my all jabber client will connect to that server and interact in each other. if my concept is wrong then discuss please what should i do and also tell me how jabber client works. how people use jabber client to interact in each other. thanks
tbhattacharjee
|
|
|
|
|
You never said you were going to use the Jabber servers as your servers. Good luck with that!
You might want to read this so you get an idea of what you're getting yourself into: Jabber Client Programmer's Cheat Sheet[^]
|
|
|
|
|
What results did you rule out when you searched in Google? I would hate to duplicate work that you have already done. Does the Jabber site have any information?
|
|
|
|
|
With all these questions, it may help you to learn how to use Google; you will be amazed at how much time it saves you.
Use the best guess
|
|
|
|
|
If I want to serialize an object I have to use [Serializable] attribute and all member variables will be written to the file. What I don't know how to do versioning e.g. if I add a new member variable (rename a variable or just remove a variable) to the object e.g. m_dRadius and then I open (deserialize) the file how can I determine that the variable was initialized during the load or not.
I know that there are version tolerant approaches and I can mark variables with [OptionalField(VersionAdded = 1)] attribute. If I open an old file the framework will ignore this optional (new variable) and it will be just zero/null. But again how can I determine if the variable is initialized by load to zero or it was ignored.
I can write the class/object version number to the stream. Use the ISerializable approach and in the constructor(SerializationInfo oInfo, StreamingContext context) method read this version number. This will exactly tell me what is the class version in the stream.
However I expected that such kind of versioning is already implemented by the streaming framework. I tried to obtain the Assembly version from the SerializationInfo but it is always set to current version not to the version which was used when the object was saved.
What is the preferred approach? I found a lot of articles on the net, but I could not find a good solution for this...
Any help is appreciated
Thanks,
Abyss
|
|
|
|
|
Abyss wrote: What is the preferred approach?
If there was a preferred approach that applies in all circumstances, all other approaches would be dropped.
I'd go for the simplest solution; meaning the OptionalField if I'd expect that the class is not going to change much. Anything that could have more/complexer versions, I'd write a custom ISerializable.
Abyss wrote: However I expected that such kind of versioning is already implemented by the streaming framework. I tried to obtain the Assembly version from the SerializationInfo but it is always set to current version not to the version which was used when the object was saved.
It'd be overkill, and not everybody will be wanting to use those version-numbers. Keep in mind that the version-number you see is the one of the assembly that the class is contained in. Alternatively, one might use different version numbers for files, created with a single version of a class. So, the one-size-fits all wouldn't fit here.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
i have very small programming experience. i heard about code optimization but do not know what it is. so i like to have good insight about code optimization that what it is and how people do the code optimization in real life. looking for good discussion and also redirect me to few good article which guide me to do the code optimization in real life. thanks
tbhattacharjee
|
|
|
|
|
I don't know of any "good sources" (well I know one, but it's pretty advanced), but I can give you a quick tour:
Profile everything. If you make any change to the part of the program you're optimizing, profile it again. Profile with realistic data - it can make all the difference. Don't bother with microbenchmarks, they're even harder to do right than normal benchmarking and they usually don't give a clear picture of how things behave in context. Besides, most likely, other people have already done them, so just look up the results.
Try out many different strategies. The algorithm that looks fastest on paper isn't always the fastest in practice, so be sure to try the "slow way" too, especially if it's much simpler or uses much less memory.
Ask for help often and/or search around for existing answers, and pay special attention to the explanation of why a certain thing is faster than an other.
After a while (could take some time) you'll get accustomed to the often counter-intuitive rules that determine what is fast and what isn't. Even then it'll be a constant battle of applying a new idea and benchmarking that, combining ideas and testing whether maybe together they help even if none of them helped individually, it'll still be hard and it will still take a lot of time, but you won't just be trying things blindly anymore.
On a more personal level, don't let people with "optimization is evil"-mindsets get to you. Their mindset is fueled by the constant attempts that people make to optimize the wrong thing incorrectly - as a beginner in the field of optimization, you will make that mistake. Everyone does. Ignore them, improve your skills, and eventually you won't make that mistake anymore. Or less often anyway, everyone makes mistakes now and then.
modified 26-Mar-13 5:57am.
|
|
|
|
|
Tridip Bhattacharjee wrote: i have very small programming experience
Then it is unlikely to be a good idea.
You need to know how to write "good" programs before you can understand how to make them more performant.
Requirements\architecture\design has far more impact on performance than any code optimizations will. So learning how to do the former well is going to have far more impact.
|
|
|
|
|
we know that when we declare static class then static class load in memory once when we run our apps. i was asked a wired question in interview and i could not explain very well. the question was 1) why we can not create instance of static class ? i will be glad if anyone explain in detail.
2) how memory is allocated for static class & why static class data stored in stack not in heap ?
looking for details discussion. thanks
tbhattacharjee
|
|
|
|
|
1) By definition.
2) What?
Those are horrible interview questions, I suspect they already decided they don't want you.
|
|
|
|
|
1) The purpose of a static class is to have only static methods... as I already explained on the other answer, extension methods require static classes, but a static method inside a static class or inside a normal class works the same way.
2) I think you are confusing static classes with value types. All the data on static classes uses normal allocation (heap). Only local variables are kept on the stack. But, as I said on the other answer, an int can be on the heap if it is part of another class, or it can be on the stack if it is a local variable (and actually this is not always true with anonymous delegates, but less forget about it).
A reference type (like a string) is always on the heap. But the "pointer" to such string follows the same principle as an int. So, a local string will have a reference on the stack and the real object on the heap. A string inside another object will have a pointer on the heap (the object which such string) and the string itself also on the heap, but at another place.
modified 25-Mar-13 12:13pm.
|
|
|
|
|
thanks for your time & answer.
you said :- Only local variables are kept on the stack.
an int can be on the heap if it is part of another class, or it can be on the stack if it is a local variable.
can u plzz explain with example or sample code which one will store when on heap and stack?
when int will store in heap and when on stack? i heard int is struct type and struct types are value type and they always store on stack. it would better if u please come with sample class code and explanation.
also tell me where actual value will store like Name="keith" Salary=25000 etc. thanks
tbhattacharjee
|
|
|
|
|
In any method...
int i = 5;
MyObject myObject = new MyObject();
myObject.intField = 10;
If you use unsafe code you can check the real size of objects by using the sizeof() operator. It will show you how many bytes such object will occupy. If it is a value type, that means how many bytes it will occupy where it is declared (if declared locally, it will be in stack... if declared inside another class, that will means how many bytes it will add to the size of instances of that class).
And to explain your question about Name and Salary.
If you have a class with both Name and Salary, the contents of such class will always be on the heap.
So, you will have:
Name = some address... 4 or 8 bytes (depending if the computer is 32 or 64 bits)
Salary = (if it is an int, then 4 bytes).
And that "some address" will in fact be where the "keith" object is contained.
There is where an important factor happens:
Imagine that you have 2 instances of your type that has name and salary, but both pointing to the same name.
Considering a 64 bits computer, each instance will have the normal object header (I think it is 16 bytes) + a string reference (8 bytes) + an int (4 bytes).
That is: 28 for each instance * 2 = 56.
But you will have "keith" only once in memory.
Again, this should be 16 + the length of the string * 2 + some info used by the string itself (I think it is only the hashcode, but I am not sure). That is: 16 + 10 + 4. Or 30 bytes only to contain "keith" in memory.
Now, if you have 100 references to "keith", the string reference will always stay at 8 bytes... so, 100 references = 800 bytes. But the string is only once in memory. Much better than having 30 * 100 (or 3000 bytes) for the strings.
|
|
|
|
|