Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-07-2009, 09:20   #1
Xizor
Member
 
L'Avatar di Xizor
 
Iscritto dal: Dec 2006
Messaggi: 185
[Java] Problema in lettura di un file di testo

Salve a tutti, ho un problema con questo programma in Java:
devo aprire in lettura il seguente file di testo, leggerlo tutto ed estrapolare da esso le intere righe che mi interessano e scriverle su un altro file. Le righe che interessano sono SOLO QUELLE che indicano operazioni svolte dall'amministratore in questo file di Log. Potete darmi una mano? Non capisco perchè non funziona...

Quote:
Tipo,Data,Ora,Origine,Categoria,Evento,Utente,Computer
Operazioni riuscite,06/07/2009,12.07.30,Security,Accesso/fine sess. ,540,Administrator,SERVER
Operazioni riuscite,06/07/2009,12.07.30,Security,Accesso/fine sess. ,576,Administrator,SERVER
Operazioni riuscite,06/07/2009,12.07.30,Security,Accesso/fine sess. ,540,Administrator,SERVER
Operazioni riuscite,06/07/2009,12.07.30,Security,Accesso/fine sess. ,576,Administrator,SERVER
Operazioni riuscite,06/07/2009,12.07.29,Security,Accesso/fine sess. ,538,MAGA02$,SERVER
Operazioni riuscite,06/07/2009,12.07.28,Security,Accesso/fine sess. ,540,FAR15$,SERVER
Operazioni riuscite,06/07/2009,12.07.28,Security,Accesso/fine sess. ,540,Administrator,SERVER
Operazioni riuscite,06/07/2009,12.07.28,Security,Accesso/fine sess. ,576,Administrator,SERVER
Operazioni riuscite,06/07/2009,12.07.24,Security,Accesso/fine sess. ,540,MAGA02$,SERVER
Operazioni riuscite,06/07/2009,12.07.20,Security,Accesso/fine sess. ,538,cbibiani,SERVER


Codice:
import java.io.*;
import java.lang.*;
import java.util.*;

class Log {
public static void main (String args[]) {

int a=1;
char thischar=' ';								//char per la lettura di un singolo carattere
String s=null;								//string per la lettura di una linea 

try {

FileReader f = new FileReader("protezione2.txt");		
BufferedReader fIN = new BufferedReader(f);
FileWriter f2 = new FileWriter("EventLog.txt",true);		
PrintWriter fOUT = new PrintWriter(f2);

s=fIN.readLine();							
System.out.println(s);

do {
while(fIN.read()!=-1){
thischar=(char) fIN.read();	
System.out.print(thischar);
if(thischar=='A') {							//SE il carattere è 'A'
thischar=(char) fIN.read();					//leggi il carattere successivo
if(thischar=='d') {							//SE il carattere successivo è 'd'
thischar=(char) fIN.read();					//leggi il carattere successivo
fOUT.println(s);
}}}
s=fIN.readLine();	
}
while(s!=null);

}
catch(IOException e) {
System.out.println("Si e' verificata un'eccezione "+e.getMessage());
}}}

Ultima modifica di Xizor : 07-07-2009 alle 09:29.
Xizor è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 09:35   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Riposto il codice, identato in modo da redere il tutto più leggibile:
Codice:
import java.io.*;
import java.lang.*;
import java.util.*;

class Log
{
    public static void main (String args[])
    {
        int a=1;
        char thischar=' ';  //char per la lettura di un singolo carattere
        String s=null;      //string per la lettura di una linea

        try
        {
            FileReader f = new FileReader("protezione2.txt");
            BufferedReader fIN = new BufferedReader(f);
            FileWriter f2 = new FileWriter("EventLog.txt",true);
            PrintWriter fOUT = new PrintWriter(f2);

            s=fIN.readLine();
            System.out.println(s);

            do
            {
                while(thischar!='?')
                {
                    thischar=(char) fIN.read();
                    System.out.print(thischar);
                    if(thischar=='A') {                         //SE il carattere è 'A'
                        thischar=(char) fIN.read();                 //leggi il carattere successivo
                        if(thischar=='d') {                     //SE il carattere successivo è 'd'
                            thischar=(char) fIN.read();             //leggi il carattere successivo
                            fOUT.println(s);
                        }
                    }
                }
                s=fIN.readLine();
            }
            while(s!=null);
        }
        catch(IOException e)
        {
            System.out.println("Si e' verificata un'eccezione "+e.getMessage());
        }
    }
}
Primo "problema" che salta all'occhio:
- sia che le operazioni di I/O vadano a buon fine oppure no, gli stream non vengono chiusi.

Invece per quanto riguarda il codice che rappresenta la logica di estrazione delle stringhe desiderate:
- notiamo che ogni stringa è formata sempre da 8 campi (Tipo,Data,Ora,Origine,Categoria,Evento,Utente,Computer) separati dal carette di virgola, e quello che ci interessa è il campo Utente (il settimo): quando è uguale alla stringa "Amministratore" l'intera riga letta va inserita nel nuovo file.
- potresti realizzare semplicemente la cosa usando un oggetto java.util.Scanner che supporta il parsing di String mediante uno o più delimitatori personalizzabili: nel tuo caso, dato un oggetto String che rappresenta una riga del file di input, il delimitatore per il parsing è il carattere ','.

Come procederei io:
- tramite BufferedReader leggo tutte le righe del file di input e le salvo in un array di String; chiudo il file di input.
- creo una java.util.List<String> che conterrà le String da scrivere nel nuovo file di output.
- ciclo l'array di String, per ogni String nell'array: tramite uno Scanner (con delimitatore personalizzato sul carattere di virgola) faccio il parsing della String per prendere il settimo 'token' e confrontarlo con la String "Administrator": se è uguale allora lo aggiungo alla java.util.List<String>.
- ciclo la lista di String e tramite un PrintWriter le scrivo tutte sul file di output; chiudo il file di output.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 07-07-2009 alle 09:49.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 09:43   #3
Xizor
Member
 
L'Avatar di Xizor
 
Iscritto dal: Dec 2006
Messaggi: 185
Giusto
Prima del catch ma dentro il try ho messo

Codice:
f.close();
f2.flush();
f2.close();
Poi credo che nel while, dove faccio il controllo con fIN.read() e -1, viene usata la funzione read, leggendo un carattere in più che invece andrebbe assegnato sempre a thischar.
Xizor è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 09:45   #4
Xizor
Member
 
L'Avatar di Xizor
 
Iscritto dal: Dec 2006
Messaggi: 185
Quote:
Originariamente inviato da banryu79 Guarda i messaggi

Invece per quanto riguarda il codice che rappresenta la logica di estrazione delle stringhe desiderate:
- notiamo che ogni stringa è formata sempre da 8 campi (Tipo,Data,Ora,Origine,Categoria,Evento,Utente,Computer) separati dal carette di virgola, e quello che ci interessa è il campo Utente (il settimo): quando è uguale alla stringa "Amministratore" l'intera riga letta va inserita nel nuovo file.
- potresti realizzare semplicemente la cosa usando un oggetto java.util.Scanner che supporta il parsing di String mediante uno o più delimitatori personalizzabili: nel tuo caso, dato un oggetto String che rappresenta una riga del file di input, il delimitatore per il parsing è il carattere ','.
Ok, grazie, non l'ho mai usata o sentita...ma proverò a vedere come funziona da qualche parte..
E' come StringTokenizer?
Xizor è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 09:49   #5
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
...potresti scorrere riga per riga e controllare se all'interno esiste la stringa "administrator" senza controllare carattere per carattere...inoltre se usi java 5 puoi utilizzare uno scanner...

Codice:
Scanner in = new Scanner(new File("/home/user/miofile"));
		while(in.hasNextLine()) {
			String line = in.nextLine();
			if(in.nextLine().indexOf("administrator")>-1)	
		       System.out.println(line);
		}
...ciao Andrea...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 09:54   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Xizor Guarda i messaggi
Giusto
Prima del catch ma dentro il try ho messo

Codice:
f.close();
f2.flush();
f2.close();
Poi credo che nel while, dove faccio il controllo con fIN.read() e -1, viene usata la funzione read, leggendo un carattere in più che invece andrebbe assegnato sempre a thischar.
Se il codice entra nel catch è perchè c'è stata un'eccezione di I/O e tu non sai se gli stream sono comunque stati tutti aperti o no: quindi sia nel caso venga lanciata un'eccezione che nel caso contrario bisognerebbe assicurarsi di chiudere gli stream, inserendo la chiusura nel blocco finally (e assicurandosi di invocare il metodo close solo su reference non nulle).
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:03   #7
Xizor
Member
 
L'Avatar di Xizor
 
Iscritto dal: Dec 2006
Messaggi: 185
La lettura delle righe nel file di input va effettuata in un ciclo while(true) ? Cioè, leggere fino a che non finisce il file?
Xizor è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:06   #8
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Xizor Guarda i messaggi
La lettura delle righe nel file di input va effettuata in un ciclo while(true) ? Cioè, leggere fino a che non finisce il file?
A cosa ti riferisci? Al fatto di leggerlo con un BufferedReader?
In tal caso sfrutti il metodo readLine che torna una String contente la riga letta, altrimenti torna null (e vuol dire che hai già letto tutte le righe).

Quindi imposti un ciclo su questa condizione: finchè la riga letta è diversa da null.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:07   #9
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
Quote:
Originariamente inviato da Xizor Guarda i messaggi
La lettura delle righe nel file di input va effettuata in un ciclo while(true) ? Cioè, leggere fino a che non finisce il file?
...se la lettura va fatta fino a che non ha finito le righe da leggere il condizionale del while non puo' essere true (ciclo infinito)...

...ciao Andrea...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:12   #10
Xizor
Member
 
L'Avatar di Xizor
 
Iscritto dal: Dec 2006
Messaggi: 185
Codice:
int i=0;
String s=null;								
String lines[] = new String[1000];

try {
FileReader f = new FileReader("protezione2.txt");		
BufferedReader fIN = new BufferedReader(f);

s=fIN.readLine();

while(s!=null) {
i++;
s=fIN.readLine();
lines[i]=s;
}
f.close();
}
catch(IOException e) {
System.out.println("Si e' verificata un'eccezione "+e.getMessage());
}
Così dovrebbe andare...

Quote:
creo una java.util.List<String> che conterrà le String da scrivere nel nuovo file di output.
Come si crea? Non l'ho mai sentita
Xizor è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:22   #11
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
Quote:
Originariamente inviato da Xizor Guarda i messaggi
Codice:
int i=0;
String s=null;								
String lines[] = new String[1000];

try {
FileReader f = new FileReader("protezione2.txt");		
BufferedReader fIN = new BufferedReader(f);

s=fIN.readLine();

while(s!=null) {
i++;
s=fIN.readLine();
lines[i]=s;
}
f.close();
}
catch(IOException e) {
System.out.println("Si e' verificata un'eccezione "+e.getMessage());
}
Così dovrebbe andare...



Come si crea? Non l'ho mai sentita
...se leggi lo stream e ti assicuri che non sia nullo perchè lo rileggi all'interno del while prima dell'assegnazione?...ti consiglio di commentare i vari passaggi del tuo metodo...

...ciao Andrea...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:27   #12
Xizor
Member
 
L'Avatar di Xizor
 
Iscritto dal: Dec 2006
Messaggi: 185
Quote:
Originariamente inviato da ally Guarda i messaggi
...se leggi lo stream e ti assicuri che non sia nullo perchè lo rileggi all'interno del while prima dell'assegnazione?...ti consiglio di commentare i vari passaggi del tuo metodo...

...ciao Andrea...
[code]
s=fIN.readLine(); //leggo la prima riga

while(s!=null) { //verifico che non sia finito il file
lines[i]=s; //assegno la riga a ciascun elemento dell'array
i++; //incremento l'indice dell'array
s=fIN.readLine(); //assegno ad s la riga letta
}
f.close(); //chiudo il file di input
}CODE]

Giusto, grazie

Ultima modifica di Xizor : 07-07-2009 alle 10:32.
Xizor è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:33   #13
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
...c'è un altro errorino legato al counter dell'array...infine l'uso di un array inizializzato ad un valore standard puo' creare problemi...

...ciao Andrea...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:37   #14
Xizor
Member
 
L'Avatar di Xizor
 
Iscritto dal: Dec 2006
Messaggi: 185
Codice:
s=fIN.readLine();		//leggo la prima riga

while(s!=null) {	             //verifico che non sia finito il file							
lines[i]=s;		//assegno la riga a ciascun elemento dell'array
i++;			//incremento l'indice dell'array   
s=fIN.readLine();		//assegno ad s la riga letta
}			
f.close();			//chiudo il file di input
}
Ok sistemato il contatore.
Per quanto riguarda l'inizializzazione non è obbligatorio inizializzare l'indice?
Xizor è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:41   #15
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
Quote:
Originariamente inviato da Xizor Guarda i messaggi
Codice:
s=fIN.readLine();		//leggo la prima riga

while(s!=null) {	             //verifico che non sia finito il file							
lines[i]=s;		//assegno la riga a ciascun elemento dell'array
i++;			//incremento l'indice dell'array   
s=fIN.readLine();		//assegno ad s la riga letta
}			
f.close();			//chiudo il file di input
}
Ok sistemato il contatore.
Per quanto riguarda l'inizializzazione non è obbligatorio inizializzare l'indice?
...si è obbligatorio...stai solo attento che le righe lette non superino la dimensione dell'array...altrimenti sei costretto a trovare una soluzione...interrompere la lettura,incrementare la dimesnione dell'array o trovare un oggetto che non dia crucci legati alla dimensione come le List...

...ciao Andrea...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:47   #16
Xizor
Member
 
L'Avatar di Xizor
 
Iscritto dal: Dec 2006
Messaggi: 185
Quote:
Originariamente inviato da ally Guarda i messaggi
...si è obbligatorio...stai solo attento che le righe lette non superino la dimensione dell'array...altrimenti sei costretto a trovare una soluzione...interrompere la lettura,incrementare la dimesnione dell'array o trovare un oggetto che non dia crucci legati alla dimensione come le List...

...ciao Andrea...
Codice:
Vector line = new Vector();	

while(s!=null) {		//verifico che non sia finito il file							
line.addElement(s);	//assegno la riga a ciascun elemento dell'array
i++;			//incremento l'indice dell'array   
s=fIN.readLine();		//assegno ad s la riga letta
}
Potrei usare la classe Vector no?
Xizor è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:51   #17
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Mi corrego in una cosa rispetto alla procedura passo-passo che ho detto che avrei seguito:
invece di leggere tutto il file di input in un array di String per poi estrarre dall'array le String interessanti e memorizzarle su una java.util.List<String> per poi iterare su di essa farei così:
leggo tutto il file di input creando subito la List<String>; procedo iterando sulla lista e rimuovendo tutte le String che non mi interessano; quindi scrivo la List così depurata nel file di output.

In 2 parole:
java.util.List è un'interfaccia che rappresenta una collezione ordinata di elementi ovvero una sequenza ; permette all'utente l'accesso a un elemento della sequenza tramite il suo indice, nonchè la possibilità di inserire un elemento in un punto preciso; inoltre l'utente può eseguire una ricerca specificando l'elemento richesto e ottentendo come risposta la prima posizione trovata (se l'elemento è presente).
List permette l'inserimento di elementi duplicati (cioè uguali).
Fornisce all'utente un java.util.Iterator per eseguire l'iterazione della lista, inoltre fornisce lo speciale ListIterator (ha delle capacità in più rispetto al solito iteratore).

Fa parte della Collection Framework inclusa nel JDK della Sun, racchiusa nel package java.util (cha ha anche altre utilità oltre le Collection).

Un'implementazione di una List (che appunto è solo un'interfaccia) da usare nel tuo caso potrebbe essere ArrayList (questa è una classe che implementa List).

Il fatto di dire che vogliamo una List<String> significa dire che gli elementi della lista saranno di tipo String. Questa feature si chiama "Generics" ed è stata introdotta da Java 5.

Fatti un giro nella javadoc a dai un occhio alla descrizione del package java.util.

Esempio s'uso:
Codice:
// creo una lista di stringhe, inzialmente vuota;
List<String> inputFile = new ArrayList<String>();

// supponiamo che 'reader' sia un BufferedReader di un file di testo aperto in lettura
String line = reader.readLine();
while(line != null)
{
    inputFile.add(line);
    line = reader.readLine();
}
Esempio: stampo tutte le stringhe nella list
Codice:
// inputFile è la lista di prima, il costrutto for che uso qui sotto è un
// costrutto speciale introdotto con i Generics.
// Puoi leggerlo così: per ogni String 'line' in 'inputFile'... (in pratica è una sorta di for each)
for (String line : inputFile)
    System.out.println(line);
oppure con un iterator (il for each dietro le quinte usa l'iterator della list)
Codice:
Iterator<String> iterator = inputFile.iterator();
while (iterator.hasNext())
{
    String line = iterator.next();
    if (line.indexOf("Administrator") != -1)
        iterator.remove();
}
@EDIT:
Potresti anche usare Vector, solo che Vector rispetto a List è un pochino meno performante, poichè Vector ha i metodi sincronizzati per potere essere utilizzato in contesti di multithreading, mentre List no.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 08-07-2009 alle 11:43.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 10:56   #18
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Mi corrego in una cosa rispetto alla procedura passo-passo che ho detto che avrei seguito:
invece di leggere tutto il file di input in un array di String per poi estrarre dall'array le String interessanti e memorizzarle su una java.util.List<String> per poi iterare su di essa farei così:
leggo tutto il file di input creando subito la List<String>; procedo iterando sulla lista e rimuovendo tutte le String che non mi interessano; quindi scrivo la List così depurata nel file di output.
...si è una soluzione...io sinceramente scorrerei ogni linea del file di testo e se rispetta le clausole di appartenenza ("administrator") la scriverei direttamente sul file di destinazione senza passare per una lista...anche se questo sistema puo' creare piu' problemi nella gestione di eccezioni...

...ciao Andrea...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 11:02   #19
Xizor
Member
 
L'Avatar di Xizor
 
Iscritto dal: Dec 2006
Messaggi: 185
Quote:
Originariamente inviato da ally Guarda i messaggi
...si è una soluzione...io sinceramente scorrerei ogni linea del file di testo e se rispetta le clausole di appartenenza ("administrator") la scriverei direttamente sul file di destinazione senza passare per una lista...anche se questo sistema puo' creare piu' problemi nella gestione di eccezioni...
Usando la classe Vector, per la " clausola di appartenenza" ("administrator") devo utilizzare lo scanner di prima?
Xizor è offline   Rispondi citando il messaggio o parte di esso
Old 07-07-2009, 11:03   #20
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
Quote:
Originariamente inviato da Xizor Guarda i messaggi
Usando la classe Vector, per la " clausola di appartenenza" ("administrator") devo utilizzare lo scanner di prima?
...Xizor...la cosa migliore da fare in questi casi è "smanacciare" con un po' di coerenza...scrivi il tuo codice...al massimo lo si corregge...eh eh...

...ciao Andrea...
ally è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Nuovo test di accensione dei motori per ...
Novità dalle analisi dell'asteroi...
La PS6 sarà più potente del previsto: ec...
Sony svela Xperia 10 VII: è il nu...
Amazon Weekend da urlo: iPhone 16 a prez...
Spotify diffida ReVanced: chiesta la rim...
Spazzolini elettrici Oral-B iO in super ...
Samsung Galaxy Watch8 Classic e Watch7 a...
Blue Origin prosegue lo sviluppo di Blue...
Roborock Saros 10 e 10R dominano il merc...
Apple scatenata su Amazon: tutti gli sco...
Canon EOS C50 è la nuova videocam...
ASUS ProArt P16 arriva in Italia: la wor...
Fujifilm presenta l'obiettivo FUJINON GF...
Il grafene ha appena 'infranto' una legg...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:39.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v