/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Kopiere fil fra jar - aaargh
Fra : Morten Nørgaard


Dato : 26-03-03 14:01

Hej,

jeg placerer et program i en jar-fil sammen med den access-database,
programmet refererer til. Når programmet startes vil jeg kopiere databasen
fra jar'en til et katalog som jeg opretter på den maskine, jar'en køres fra.
Men hvordan i alverden gør jeg det?

TAK for inspiration,

/Morten



 
 
Soren Davidsen (26-03-2003)
Kommentar
Fra : Soren Davidsen


Dato : 26-03-03 14:14

"Morten Nørgaard" <morten.norgaard_NOSPAM@uni-c.dk> writes:

> Hej,
>
> jeg placerer et program i en jar-fil sammen med den access-database,
> programmet refererer til. Når programmet startes vil jeg kopiere databasen
> fra jar'en til et katalog som jeg opretter på den maskine, jar'en køres fra.
> Men hvordan i alverden gør jeg det?
>
> TAK for inspiration,

Lav en klasse til at kopiere den ud, og laeg database filen i samme
pakke som denne..

Klassen kan saa ligne noget ala dette:

package mindb;

public class DbConfigurator {

public static void configureDatabase(String outputPath) throws .. {

InputStream in = getClass().getResourceAsStream("min.db");

FileOutputStream out = new FileOutputStream(outputPath);

.. kopier in -> out og luk begge streams ..
}

}

Din jarfil skal saa indeholde noget ala:

mindb/DbConfigurator.class
mindb/min.db


Mvh,

--
___
Soren Davidsen / o\
Math student, ICSMA (_____)
__ http://www.tanesha.net/ _________________________________(___)_______

Morten Nørgaard (28-03-2003)
Kommentar
Fra : Morten Nørgaard


Dato : 28-03-03 08:44

Hej Søren,

tak for inspiration - din hjælp gjorde for et godt udgangspunkt. Til
andres evt. inspiration er koden her:



// handles creating a local directory to hold the application's
// underlying database, plus copying this from the jar to the
// dir.

import java.io.InputStream;
import java.io.FileOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.FileNotFoundException;


import javax.swing.JOptionPane;


public class SpssImageViewerDbConfigurator
{
String databaseName;
String applicationDir;

public String getDatabaseName() { return databaseName; };
public void setDatabaseName( String dbname) { databaseName = dbname; };

public String getApplicationDir() { return applicationDir; };
public void setApplicationDir( String applicationD) { applicationDir =
applicationD; };

public SpssImageViewerDbConfigurator() {}

public File getPathNameOfApplication()
{
// look for the 'program files' or 'programmer' catalogue
// on a local drive - return if found

File[] roots = new File("temp").listRoots();
File path = null;

for ( int i = 1; i < roots.length; i++)
{
File f1 = new File( roots[i] + "programmer\\" );

if ( f1.exists() )
{
//System.out.println( "have a programmer" );

if ( ! (roots[i].getAbsolutePath()).equals( "A:\\") &&
! (roots[i].getAbsolutePath()).equals( "B:\\") )
{
path = f1;
break;
}
}

File f2 = new File( roots[i] + "program files\\" );
if ( f2.exists() )
{
//System.out.println( "have a program files" );

if ( ! (roots[i].getAbsolutePath()).equals( "A:\\") &&
! (roots[i].getAbsolutePath()).equals( "B:\\") )
{
path = f2;
break;
}
}
}

return path;
}


public File generateDatabaseDirectory( File pathName )
{
File f = null;

if ( pathName != null )
{
f = new File( pathName + "\\" + applicationDir + "\\" );
if ( f.exists() )
{
// directory already exists - return
//System.out.println( f.getAbsolutePath() );
return f;
}
else
{
try
{
f.mkdir();
return f;
}
catch( SecurityException sex )
{
System.err.println( "Could not create application dir.");
return null;
}
}
}

return f;
}




public boolean configureDatabase(File appPath)
{

try
{
// retrieve database from jar
InputStream inputStream = getClass().getResourceAsStream(databaseName);

File f = new File(appPath.getAbsolutePath() + "\\" + databaseName);
applicationDir = f.getAbsolutePath();

// if db exists, exit
if ( f.exists() )
{
System.out.println( "database already exists - won't overwrite it" );
return true;
}
else
{

// configure output file
FileOutputStream outputStream = new FileOutputStream(appPath + "\\" +
databaseName);

// ensure other threads won't interfere by using 'synchronized'
synchronized( inputStream )
{
synchronized( outputStream )
{
byte bytes[] = new byte[256];
int read;
try
{
while (true)
{
read = inputStream.read( bytes);
if ( read == -1 ) break;

outputStream.write( bytes,0,read);
}


inputStream.close();
outputStream.close();
return true;
}
catch( IOException ioe )
{
System.err.println( "IOExeption");
return false;
}

}
}

} // end else
}
catch ( FileNotFoundException fnf )
{
fnf.printStackTrace();
return false;

}
catch ( Exception e )
{
e.printStackTrace();
return false;
}

}

}







"Soren Davidsen" <soren200303@tanesha.net> wrote in message
news:j3wuimfexd.fsf@tanesha.net...
> "Morten Nørgaard" <morten.norgaard_NOSPAM@uni-c.dk> writes:
>
> > Hej,
> >
> > jeg placerer et program i en jar-fil sammen med den access-database,
> > programmet refererer til. Når programmet startes vil jeg kopiere
databasen
> > fra jar'en til et katalog som jeg opretter på den maskine, jar'en køres
fra.
> > Men hvordan i alverden gør jeg det?
> >
> > TAK for inspiration,
>
> Lav en klasse til at kopiere den ud, og laeg database filen i samme
> pakke som denne..
>
> Klassen kan saa ligne noget ala dette:
>
> package mindb;
>
> public class DbConfigurator {
>
> public static void configureDatabase(String outputPath) throws .. {
>
> InputStream in = getClass().getResourceAsStream("min.db");
>
> FileOutputStream out = new FileOutputStream(outputPath);
>
> .. kopier in -> out og luk begge streams ..
> }
>
> }
>
> Din jarfil skal saa indeholde noget ala:
>
> mindb/DbConfigurator.class
> mindb/min.db
>
>
> Mvh,
>
> --
> ___
> Soren Davidsen / o\
> Math student, ICSMA (_____)
> __ http://www.tanesha.net/ _________________________________(___)_______



Søg
Reklame
Statistik
Spørgsmål : 177460
Tips : 31964
Nyheder : 719565
Indlæg : 6408200
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste