Avatar billede trp79 Nybegynder
19. februar 2003 - 23:04 Der er 15 kommentarer og
1 løsning

Tage backup af fil, hvis den indeholder noget (objekter)

Hejsa,
Ved hjælp af Serializable gemmer jeg objekter i en fil. Jeg vil gerne når jeg starter programmet tage en backup af min fil. Men denne backup skal selvfølgelig kun tages hvis filen indeholder objekter.

Hvordan gør man det på en pæn måde?
Man kan jo godt bare først tjekke på om det er muligt at gendanne fx et objekt ud fra filen for derefter at tage en backup hvis det gendanne af objektet var muligt. Men er det den pæneste måde at gøre det på?

Noget andet er, hvor kopiere jeg en fil? kan man fx bare sige: ObjectOutputStream Backup = ObjectInputStream Data
eller hvordan gør man det(på en pæn måde)?

På forhånd tak for hjælpen,

Mvh
Torben
Avatar billede trp79 Nybegynder
19. februar 2003 - 23:06 #1
Bør man iøvrigt ellers lave programmet således at det selv tager en backup hver uge, og måske endda selv slette backup filer som er mere end fx 5mdr. gamle?
Avatar billede arne_v Ekspert
19. februar 2003 - 23:17 #2
Du kan gøre forskelligt:

1)  Kopiere filen der indeholder de serializede objekter i Java

2)  Kalde operativ-systemets COPY kommando til at kopiere filen

3)  Læse filen og skrive en backup fil i tekst format
Avatar billede arne_v Ekspert
19. februar 2003 - 23:17 #3
Det sidste gør det noget nemmere at recover, hvis du ændrer
i dine klasser.
Avatar billede trp79 Nybegynder
20. februar 2003 - 00:07 #4
Er nu ikke så bange for det sidste. Hvis man ændre i klasserne kan man jo bare lave en forløkke der løber den gamle fil og tilføjer (tomme) parametre hvis det er...

Hvordan kodemæssigt copiere jeg i java?
Når du skriver OS COPY så mener du at jeg skal lave en bat-fil?
Avatar billede arne_v Ekspert
20. februar 2003 - 07:40 #5
Med OS COPY tænker jeg på noget i retning af:
  Runtime.getRuntime().exec("copy minfil.dat minfil.bck");
Avatar billede arne_v Ekspert
20. februar 2003 - 07:41 #6
Jeg mener det er et problem, hvis klassen ændrer sig mellem
serialisering og deserialisering.
Avatar billede trp79 Nybegynder
20. februar 2003 - 18:16 #7
Jeg prøver at kigge på det... måske jeg bare skulle smide det i tekstfiler..

Jeg takker atter engang:o)
Mvh
Torben
Avatar billede trp79 Nybegynder
20. februar 2003 - 18:28 #9
Jeg kigger lige lidt på det inden jeg bestemmer mig så :o)
Avatar billede trp79 Nybegynder
24. februar 2003 - 21:43 #10
Det er bare 10 gange nemmere at bruge serialisering når man arbejder med objekter som består af andre objekter. Men da programmet helt sikkert kan udvides bør jeg nok holde mig til teskst filer og så have nogle unikke variabler i de forskellige objekttyper, så jeg kan indlæse objekterne rigtigt igen. Eller hvordan bør man se på det?
Avatar billede arne_v Ekspert
24. februar 2003 - 21:48 #11
Serialisering er fremragende til kort tids opbevaring.

Til lang tids opbevaring bør man vælge noget andet. Tekst-filer
eller en database.

Hvis du vælger tekst-filer så overvej XML. Det er meget strukturerede
data og er rimeligt godt til at mappe Java data-strukturer i.
Avatar billede trp79 Nybegynder
24. februar 2003 - 21:54 #12
Okey, jeg har godt nok aldrig arbejdet med XML, men jeg vil lige prøve at søge lidt info omkring det på exp.
Tak for hjælpen.
Avatar billede arne_v Ekspert
24. februar 2003 - 21:57 #13
Java og XML er en god kombination, som man kan have meget nytte
af i mange sammenhænge.
Avatar billede trp79 Nybegynder
24. februar 2003 - 22:18 #14
Lige et sidste spørgmål Arne.. Bliver lidt nysgerrig...
Du skriver "Serialisering er fremragende til kort tids opbevaring". Hvordan kan det være det kun og godt til korttidsopbevaring og ikke til-lang-opbevaring tids?
Avatar billede trp79 Nybegynder
24. februar 2003 - 22:19 #15
Det er det med at det ikke er særligt "vedligeholdelses venligt" du mener?
Avatar billede arne_v Ekspert
24. februar 2003 - 22:27 #16
Ja.

Problemerne kan opstå hvis man ændrer i klasserne.

Man kan sagtens gemme og hente fra serialiseret format mens programmet
kører. Fordi ens klasser ikke ændrer sig.

Man kan også sagtens gemme filer fra dag til dag, fordi så er det
stadig ikke specielt sandsyneligt at man har ændret i sine
klasser og hvis man har så har man nok nogenlunde styr på
hvad man har rettet.

Men hvis man gemmer filer i måneder/år, så er det jo rimeligt sandsyneligt
at man har ændret i sine klasser og ofte vil det være helt håbløst at forsøge
at huske præcist hvad man har ændret.

Og man kan ikke se ret meget ud af et serialiseret objekt (medmindre
man er *maget* skrap). Både XML og database tabeller kan man umiddelbart
gå ind og se hvad de indeholder af felter.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester