04. november 2008 - 18:51
Der er
7 kommentarer og 5 løsninger
Problem med embedded resource fil
jeg har embedded en sqlite database og mit program skal ved opstart checke om den er i app folderen og hvis ikke skal den oprette filen jeg har fået den til at skrive den ud men den smadrer sqlite databasen.. når jeg putter filen ind i resources så fylder den 6kb men når jeg har hevet den ud igen og lagt på disken fylder den 7kb og virker ikke.. min kode er her: StreamWriter writer = new StreamWriter(Application.StartupPath + "\\" + "contacts.db3"); System.IO.StreamReader dbStream = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("PhoneBook.Resources.contacts.db3")); string dbFile = dbStream.ReadToEnd(); writer.Write(dbFile); writer.Close(); er der nogen der kan sige mig hvorfor det går galt?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
04. november 2008 - 19:07
#1
Gør således: import java.io.File; .. File file = new File(Application.StartupPath + "\\" + "contacts.db3"); if(file.exists() && file.canRead()) { // gør hvad du skal }
04. november 2008 - 19:13
#2
Ups.. Misforstod hva du ville gøre. :p import java.io.File; .. File file = new File(Application.StartupPath + "\\" + "contacts.db3"); if(!file.exists()) { StreamWriter writer = new StreamWriter(Application.StartupPath + "\\" + "contacts.db3"); System.IO.StreamReader dbStream = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("PhoneBook.Resources.contacts.db3")); string dbFile = dbStream.ReadToEnd(); writer.Write(dbFile); writer.Close(); }
04. november 2008 - 19:13
#3
jeg kan ikke se hvordan det sku hjælpe? filen findes jo tydeligvis og den kan sagtens skrive til den
04. november 2008 - 19:14
#4
ah så ik dit andet svar før jeg havde skreve tkommentaren hehe
04. november 2008 - 19:16
#5
men det er ikke i at checke om filen eksisterer problemet ligger der går noget galt når den skriver filen hele koden er her: if(!File.Exists(Application.StartupPath + "\\" + "contacts.db3")) { StreamWriter writer = new StreamWriter(Application.StartupPath + "\\" + "contacts.db3"); System.IO.StreamReader dbStream = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("PhoneBook.Resources.contacts.db3")); string dbFile = dbStream.ReadToEnd(); writer.Write(dbFile); writer.Close(); }
04. november 2008 - 19:32
#6
Hvad er det dog jeg laver. Gav dig et svar i Java... Finder lige det du skal bruge i C#.
04. november 2008 - 19:36
#7
Dette skulle fungere: if(!File.Exists(Application.StartupPath + "\\" + "contacts.db3")) { System.IO.StreamReader dbStream = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("PhoneBook.Resources.contacts.db3")); string dbFile = dbStream.ReadToEnd(); TextWriter tw = new StreamWriter(Application.StartupPath + "\\" + "contacts.db3"); tw.WriteLine(dbFile); tw.Close(); }
04. november 2008 - 19:40
#8
hmm der sker det samme.. sqlite database filen er malformed og er vokset 1kb
04. november 2008 - 19:42
#9
Er det ikke muligt at læse PhoneBook fra en mere direkte sti? Ellers så skal den stream skrives direkte til output-filen. Kigger lige på det.
04. november 2008 - 19:50
#10
Prøv det her :) if(!File.Exists(Application.StartupPath + "\\" + "contacts.db3")) { Stream stream = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("PhoneBook.Resources.contacts.db3")); using (Stream output = new FileStream(Application.StartupPath + "\\" + "contacts.db3"))) { byte[] buffer = new byte[32*1024]; int read; while ( (read=stream.Read(buffer, 0, buffer.Length)) > 0) { output.Write(buffer, 0, read); } } }
04. november 2008 - 19:51
#11
Argh.. det går godt :) if(!File.Exists(Application.StartupPath + "\\" + "contacts.db3")) { Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("PhoneBook.Resources.contacts.db3"); using (Stream output = new FileStream(Application.StartupPath + "\\" + "contacts.db3"))) { byte[] buffer = new byte[32*1024]; int read; while ( (read=stream.Read(buffer, 0, buffer.Length)) > 0) { output.Write(buffer, 0, read); } } }
04. november 2008 - 20:40
#12
SÅ spiller det! smukt mange tak ska du ha :o)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.