File.cs CampusAppWP8::Utility::File CampusAppWP8::Utility Windows::Storage //----------------------------------------------------------------------------- //<copyrightfile="File.cs"company="BTU/IIT"> //Companycopyrighttag. //</copyright> //<author>fiedlchr</author> //<sience>03.05.2013</sience> //----------------------------------------------------------------------------- namespaceCampusAppWP8.Utility { usingSystem; usingSystem.IO; usingSystem.Threading; usingWindows.Storage; publicclassFile { privatestaticreadonlyIStorageFolderLocalFolder=ApplicationData.Current.LocalFolder; privatestringfilename=string.Empty; privateIOTypeReadreadType; privateIOTypeWritewriteType; publicFile(stringfilename,IOTypeReadread,IOTypeWritewrite) { this.filename=filename; this.readType=(read==IOTypeRead.INVALID)?IOTypeRead.ReadAsync:read; this.writeType=write; } publicenumIOTypeRead { INVALID=0, ReadSync=1, ReadAsync=2 } publicenumIOTypeWrite { INVALID=0, WriteSync=1, WriteAsync=2, ReadOnly=3 } publicdelegatevoidWriteCallbackFunc(); publicstringReadFile(IOTypeReadioType=IOTypeRead.INVALID) { stringretValue=null; if(this.Exist()==true) { IOTypeReadtempType=ioType; if(tempType==IOTypeRead.INVALID) { tempType=this.readType; } if(tempType==IOTypeRead.ReadAsync) { //retValue=this.ReadAsync(); retValue=this.ReadSync(); } elseif(tempType==IOTypeRead.ReadSync) { retValue=this.ReadSync(); } } returnretValue; } publicvoidWriteFile(byte[]data,WriteCallbackFunconSavedCallback,WriteCallbackFunconFailedCallback,IOTypeWriteioType=IOTypeWrite.INVALID) { IOTypeWritetempType=ioType; if(tempType==IOTypeWrite.INVALID) { tempType=this.writeType; } /* if(tempType==IOTypeWrite.WriteAsync) { this.WriteAsync(data,onSavedCallback,onFailedCallback); } elseif(tempType==IOTypeWrite.WriteSync) { //this.WriteSync(data); this.WriteAsync(data,onSavedCallback,onFailedCallback); } */ Threadth=newThread(delegate(){this.WriteAsync(data,onSavedCallback,onFailedCallback);}); th.Start(); //this.WriteAsync(data,onSavedCallback,onFailedCallback); } publicFileInfoGetFileInfo() { FileInfoinfo=newFileInfo(File.LocalFolder.Path+"\\"+this.filename); returninfo; } publicboolExist() { returnthis.GetFileInfo().Exists; } privatestringReadSync() { stringretValue=null; using(StreamfileStream=File.LocalFolder.OpenStreamForReadAsync(this.filename).Result) { using(StreamReaderstreamReader=newStreamReader(fileStream)) { retValue=streamReader.ReadToEnd(); } } returnretValue; } privatestringReadAsync() { stringretValue=string.Empty; returnretValue; } privateboolWriteSync(byte[]data) { boolretValue=true; returnretValue; } privateasyncvoidWriteAsync(byte[]data,WriteCallbackFunconSavedCallback,WriteCallbackFunconFailedCallback) { Logger.LogMsg("writeasyncfile:"+this.filename); StorageFilefile=null; Streams=null; intcounter=0; //tryopeningthefile while((file==null)&&(counter<10)) { try { file=awaitFile.LocalFolder.CreateFileAsync(this.filename,CreationCollisionOption.ReplaceExisting); } catch(Exception) { counter++; System.Threading.Thread.Sleep(10); } } if(file==null) { if(onFailedCallback!=null) { onFailedCallback(); } return; } counter=0; //trytogetastreamonthefile while((s==null)&&(counter<10)) { try { s=awaitfile.OpenStreamForWriteAsync(); } catch(Exception) { counter++; System.Threading.Thread.Sleep(10); } } if(s==null) { if(onFailedCallback!=null) { onFailedCallback(); } return; } //writingdata try { awaits.WriteAsync(data,0,data.Length); awaits.FlushAsync(); } catch(Exceptione) { if(onFailedCallback!=null) { onFailedCallback(); } Logger.LogException(e); s.Dispose(); return; } s.Dispose(); if(onSavedCallback!=null) { onSavedCallback(); } } } }