PDA

View Full Version : [java] log4j e altra domanda


diegof83
12-06-2006, 10:56
ciao a tutti ho due domande da porvi:
devo creare un file solo che il path me lo deve dare l'utente,come posso fare x farmi dare il path in maniera tale da creare in questa cartella il file?
seconda domanda: devo utilizzare il log4j, solo che non so di cosa tratti,qualcuno mi può dare una mano???
grazie.
ciao ciao

andbin
12-06-2006, 11:01
ciao a tutti ho due domande da porvi:
devo creare un file solo che il path me lo deve dare l'utente,come posso fare x farmi dare il path in maniera tale da creare in questa cartella il file?Ci sono sicuramente molti modi per fare questo. Però dovresti specificare meglio come e quando vuoi che l'utente ti fornisca questa informazione. Deve essere una parametrazione fissa o quasi?? Deve essere specificata in modo diverso ad ogni avvio della tua applicazione??

diegof83
12-06-2006, 11:03
lui mi da un path fisso quindi non lo cambia ogni volta, e quindi in quella cartella io devo creare il file.

peppedx
12-06-2006, 11:08
Ma è un'applicazione grafica? testuale? web?

Comunque una volta che hai l'input in una stringa concatenala coin il nome del file e poi lo puoi creare.

per quanto riguarda log4j è un framework di logging mantenuto dalla fondazione apache (basta scrivere log4j su google...)

diegof83
12-06-2006, 11:11
è un semplice programma che riceve due stringhe in ingresso e se il file non esiste viene generato, altrimenti le due stringhe vengono concatenate al file già esistente.

andbin
12-06-2006, 11:49
Puoi usare i file di "properties". Crei un file es. miaapp.properties con dentro:
path = xxx...

poi lo carichi con:
Properties props = new Properties ();

try {
props.load (new FileInputStream ("miaapp.properties"));

String path = props.getProperty ("path");
} catch (IOException e) {
/* .... */
}

diegof83
12-06-2006, 12:00
import java.io.*;

public class bo
{
public static void main (String[] args)
{
Properties props = new Properties ();
try
{
props.load (new FileInputStream ("miaapp.properties"));
String path = props.getProperty ("path");

}
catch (IO.Exception e)
{
System.out.println("Ciao");
}
}
}

mi da 3 errori sulla riga rossa.
p.s. ho creato un file che contiene semplicemente
path = nome path

andbin
12-06-2006, 12:07
mi da 3 errori sulla riga rossa.import java.util.*;

diegof83
12-06-2006, 13:48
public static void inserisci (String c,char a)
{
{
char risp;
char coda;
File f= new File ("testa.txt");
if (!f.isFile())
{
try
{
if ((!c.equals ("")) && (c != null))
{
PrintWriter pw = new PrintWriter (new FileOutputStream ("testa.txt"));
//pw.println ();
//pw.println();
pw.println (c+" "+a);
pw.close ();
}
else
throw new errore_stringa();
}
catch (Exception e)
{
e.printStackTrace ();
}
}
else
{
/*System.out.println("Vuoi mettere in coda la stringa al file gia esistente?s/n");
coda=SavitchIn.readChar();
while ((coda != 's') && (coda != 'n'))
{
System.out.println("Vuoi mettere in coda la stringa al file gia esistente?s/n");
coda=SavitchIn.readChar();
}*/
//if (coda == 's')
{
try
{
BufferedWriter bw = new BufferedWriter (new FileWriter ("testa.txt", true));
if ((!c.equals ("")) && (c != null))
{
bw.write (c+" "+a);
bw.newLine();
bw.close ();
}
else
throw new errore_stringa();
}
catch (Exception e)
{
e.printStackTrace ();
}
}
/*else
{
//System.out.println("Vuoi sovrascrivere il file?s/n");
risp=SavitchIn.readChar();
while ((risp!='s')&& (risp!='n'))
{
System.out.println("Vuoi sovrascrivere il file?s/n");
risp=SavitchIn.readChar();
}
if (risp=='s')
{
try
{

if ((!c.equals ("")) && (c != null))
{
PrintWriter pw = new PrintWriter (new FileOutputStream ("testa.txt"));
pw.println (c);
pw.close ();
}
else
throw new errore_stringa();
}
catch (Exception e)
{
e.printStackTrace ();
}
}
}*/
}
}
}
}

class errore_stringa extends Exception
{
errore_stringa()
{
super ("La stringa che mi e' stata passata e' vuota");
}
}


come faccio ad incapsulare il pezzo di codice di prima in questo programma?

andbin
12-06-2006, 14:17
come faccio ad incapsulare il pezzo di codice di prima in questo programma?Puoi fare una cosa del genere:
import java.io.*;
import java.util.*;

public class MiaApplicazione
{
private String path;

public static void main (String[] args)
{
try
{
MiaApplicazione miaApp = new MiaApplicazione ();

miaApp.loadConfig ();

/*
...
chiama miaApp.inserisci (...);
...
*/
}
catch (Exception e)
{
e.printStackTrace ();
}
}

public void loadConfig ()
throws IOException
{
Properties props = new Properties ();

props.load (new FileInputStream ("miaapp.properties"));

path = props.getProperty ("path");
}

public void inserisci (String c, char a)
{
/* .... */
}
}
Ovviamente, completalo tu. ;)

diegof83
12-06-2006, 14:42
import java.io.*;
import java.util.*;

public class cop2
{
public static void main (String[] args)
{
String c;
char a;
System.out.println ("dammi la stringa da inserire nel file");
c= SavitchIn.readLine();
System.out.println ("dammi il carattere da inserire nel file");
a= SavitchIn.readChar();
File d = new File ("esolutions");
d.mkdir ();
miaApp.inserisci(c,a);
}

public class MiaApplicazione
{
private String path;
{
try
{
MiaApplicazione miaApp= new MiaApplicazione ();
miaApp.loadConfig ();
//miaApp.inserisci(c,a);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

public void loadConfig ()
throws IOException
{
Properties props = new Properties ();

props.load (new FileInputStream ("miaapp.properties"));

String path = props.getProperty ("path");
}



public static void inserisci (String c,char a)
{
{
char risp;
char coda;
File f= new File ("esolutions/testa.txt");
if (!f.isFile())
{
try
{
if ((!c.equals ("")) && (c != null))
{
PrintWriter pw = new PrintWriter (new FileOutputStream ("esolutions/testa.txt"));
//pw.println ();
//pw.println();
pw.println (c+" "+a);
pw.close ();
}
else
throw new errore_stringa();
}
catch (Exception e)
{
e.printStackTrace ();
}
}
else
{
/*System.out.println("Vuoi mettere in coda la stringa al file gia esistente?s/n");
coda=SavitchIn.readChar();
while ((coda != 's') && (coda != 'n'))
{
System.out.println("Vuoi mettere in coda la stringa al file gia esistente?s/n");
coda=SavitchIn.readChar();
}*/
//if (coda == 's')
{
try
{
BufferedWriter bw = new BufferedWriter (new FileWriter ("esolutions/testa.txt", true));
if ((!c.equals ("")) && (c != null))
{
bw.write (c+" "+a);
bw.newLine();
bw.close ();
}
else
throw new errore_stringa();
}
catch (Exception e)
{
e.printStackTrace ();
}
}
/*else
{
//System.out.println("Vuoi sovrascrivere il file?s/n");
risp=SavitchIn.readChar();
while ((risp!='s')&& (risp!='n'))
{
System.out.println("Vuoi sovrascrivere il file?s/n");
risp=SavitchIn.readChar();
}
if (risp=='s')
{
try
{

if ((!c.equals ("")) && (c != null))
{
PrintWriter pw = new PrintWriter (new FileOutputStream ("esolutions/testa.txt"));
pw.println (c);
pw.close ();
}
else
throw new errore_stringa();
}
catch (Exception e)
{
e.printStackTrace ();
}
}
}*/
}
}
}
}

class errore_stringa extends Exception
{
errore_stringa()
{
super ("La stringa che mi e' stata passata e' vuota");
}
}


scusa se ti rompo nuovamente ma mi da 2 errori e infatto non sono sicuro sul come chiamare la funzione miaApp.inserisci. se non capisci qualche riga o qualche cosa chiedimi pure....

andbin
12-06-2006, 15:03
scusa se ti rompo nuovamente ma mi da 2 errori e infatto non sono sicuro sul come chiamare la funzione miaApp.inserisci. se non capisci qualche riga o qualche cosa chiedimi pure....Ma no ... ci sono troppi errori. Non puoi mettere un public class MiaApplicazione così a caso nel sorgente, il metodo inserisci è ancora static (non lo devi più mettere static), più altre piccole cose:

Ecco:
import java.io.*;
import java.util.*;

public class cop2
{
private String path;

public static void main (String[] args)
{
try
{
cop2 cop = new cop2 ();

cop.loadConfig ();

String c;
char a;
System.out.println ("dammi la stringa da inserire nel file");
c= SavitchIn.readLine();
System.out.println ("dammi il carattere da inserire nel file");
a= SavitchIn.readChar();

File d = new File ("esolutions");
d.mkdir ();

cop.inserisci (c,a);
}
catch (Exception e)
{
e.printStackTrace ();
}
}

public void loadConfig ()
throws IOException
{
Properties props = new Properties ();

props.load (new FileInputStream ("miaapp.properties"));

String path = props.getProperty ("path");
}


public void inserisci (String c,char a)
{
/* .... */
}
}

/* .... */

diegof83
12-06-2006, 15:11
scusa un'ultima domanda: come faccio per ogni riga che scrivo nel file a inserire la data nel formato gg/mm/aaaa all'ora hh:mm?

andbin
12-06-2006, 15:30
scusa un'ultima domanda: come faccio per ogni riga che scrivo nel file a inserire la data nel formato gg/mm/aaaa all'ora hh:mm?Ecco:
import java.text.*;
import java.util.*;

....

DateFormat fmt = new SimpleDateFormat ("dd/MM/yyyy HH:mm");

String stringaData = fmt.format (new Date ());