Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh
realme 16 5G è un nuovo smartphone con sensore Sony IMX 852 da 50MP sul retro e uno specchio selfie fisico integrato nella camera bar, una prima nel segmento di mercato. Batteria da 6550mAh in un corpo da 8,1mm e 183g, certificazione IP69K e ricarica da 45W completano un pacchetto aggressivo per la fascia media, per uno dei prodotti più interessanti del produttore sul piano commerciale
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-07-2010, 22:28   #1
SwatMaster
Senior Member
 
L'Avatar di SwatMaster
 
Iscritto dal: Aug 2008
Città: Busto Arsizio (Va)
Messaggi: 4381
[Java]Ottenere lista file di cartella e sottocartelle

Salve a tutti.
Sto provando a fare un piccolo applicativo Java che dovrebbe restituirmi un file di testo contenente la lista di tutti i file di una cartella indicata e di tutte le sue sottocartelle... Ottenere la lista dei fila della cartella indicata non è un problema, ma ottenere anche quelli di tutte le sottocartelle mi sta dando qualche grattacapo.
In teoria, basterebbe realizzare un metodo ricorsivo ad hoc, ma a quanto pare il codice non è corretto: compila ed esegue, ma mi restituisce solo i file della cartella indicata, ignorando le sottocartelle. Qualche idea?

Codice:
public String[] listSubDir(File dir) {
		LinkedList<String> temp = new LinkedList<String>();
		File[] list = dir.listFiles(); 
		for (int i = 0; i < list.length; i++){
			if (list[i].isDirectory())
				this.listSubDir(list[i]); 
			else {
				String[] split = list[i].getName().split("\\.");
				String str = split[0];
				if (split.length > 2)
					for (int k = 1; k < split.length - 1; k++)
							str += "." + split[k];
				temp.add(str);
			}
		}
		String[] temp1 = temp.toArray(new String[temp.size()]);
		return temp1;
	}
__________________
NZXT H7 Flow RGB | CoolerMaster SilentPro M 850W | Asus ROG Strix X370-I Gaming | AMD Ryzen 7 5800x, NZXT Kraken x62 | G.Skill Trident-Z DDR4 2x16GB 3600Mhz | PowerColor Reaper AMD RX 9070XT | WD Black SN850X 2TB | SteelSeries Siberia V2, Logitech G513, SteelSeries Rival 600, Corsair MM200 | Dell U2515H
SwatMaster è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2010, 22:40   #2
Kenger
Member
 
Iscritto dal: Aug 2005
Messaggi: 168
Il tuo problema è dovuto al fatto che ogni chiamata ricorsiva ti ritorna un array che dovrebbe contenere tutti i file sotto di essa e che tu ignori. Infatti l'unica cosa che ti scrive è cioè che ti restituisce la prima chiamata, che probabilmente è quello che passi al FileWriter.
Kenger è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2010, 22:43   #3
SwatMaster
Senior Member
 
L'Avatar di SwatMaster
 
Iscritto dal: Aug 2008
Città: Busto Arsizio (Va)
Messaggi: 4381
Sinceramente è un problema che così, a pelle, non saprei come risolvere

Dovrei creare un secondo metodo (ricorsivo) che richiama questo?
__________________
NZXT H7 Flow RGB | CoolerMaster SilentPro M 850W | Asus ROG Strix X370-I Gaming | AMD Ryzen 7 5800x, NZXT Kraken x62 | G.Skill Trident-Z DDR4 2x16GB 3600Mhz | PowerColor Reaper AMD RX 9070XT | WD Black SN850X 2TB | SteelSeries Siberia V2, Logitech G513, SteelSeries Rival 600, Corsair MM200 | Dell U2515H
SwatMaster è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2010, 22:58   #4
Kenger
Member
 
Iscritto dal: Aug 2005
Messaggi: 168
Nono, basta che appendi ogni volta il risultato a temp. Ti farei un esempio ma non sono molto fluente in java.

EDIT: Guardando meglio il codice mi sa che basta fare così

Codice:
public String[] listSubDir(File dir) {
		LinkedList<String> temp = new LinkedList<String>();
		File[] list = dir.listFiles(); 
		for (int i = 0; i < list.length; i++){
			if (list[i].isDirectory())
				temp.add(this.listSubDir(list[i])); 
			else {
				String[] split = list[i].getName().split("\\.");
				String str = split[0];
				if (split.length > 2)
					for (int k = 1; k < split.length - 1; k++)
							str += "." + split[k];
				temp.add(str);
			}
		}
		String[] temp1 = temp.toArray(new String[temp.size()]);
		return temp1;
	}
Chiaramente però i file saranno ordinati in base all'ordine in cui vengono trovati. Per ovviare potresti far tornare alla funzione direttamente la lista e poi nella funzione che chiama per la prima volta la funzione ricorsiva ti troverai una lista che potrai ordinare come ti pare.

EDIT2: Manca ancora qualcosa perchè andresti ad aggiungere un String[] ad una lista di String. Ma non dovresti trovare problemi a risolverlo.

Ultima modifica di Kenger : 28-07-2010 alle 23:05.
Kenger è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2010, 23:46   #5
SwatMaster
Senior Member
 
L'Avatar di SwatMaster
 
Iscritto dal: Aug 2008
Città: Busto Arsizio (Va)
Messaggi: 4381
Grazie mille per la risposta

Domani, con un po' più di lucidità, mi ci metterò dietro
__________________
NZXT H7 Flow RGB | CoolerMaster SilentPro M 850W | Asus ROG Strix X370-I Gaming | AMD Ryzen 7 5800x, NZXT Kraken x62 | G.Skill Trident-Z DDR4 2x16GB 3600Mhz | PowerColor Reaper AMD RX 9070XT | WD Black SN850X 2TB | SteelSeries Siberia V2, Logitech G513, SteelSeries Rival 600, Corsair MM200 | Dell U2515H
SwatMaster è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2010, 08:00   #6
luchky16
Junior Member
 
Iscritto dal: Jul 2010
Messaggi: 5
Codice:
	public String[] getFileList(String parent) {
		List<String> files = new ArrayList<String>();
		Stack<File> stack = new Stack<File>();
		stack.push(new File(parent));
		while(!stack.isEmpty()) {
			File[] children = stack.pop().listFiles();
			if(children == null || children.length == 0)
				continue;
			for(File f: children) {
				if(f.isDirectory()) {
					stack.push(f);
				} else {
					files.add(f.getName());
				}
			}
		}
		String[] ret = new String[files.size()];
		files.toArray(ret);
		return ret;		
	}
Ecco, ti restituisce un array con tutti i nomi dei files di una sub directory (che a sua volta può contenere altre cartelle)
luchky16 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Lo smartphone di Trump Mobile è d...
The Social Reckoning, la storia di Faceb...
FASTCloud Open Source: un cloud sovrano ...
AMD non lascia spazio a Intel: la top 15...
iPhone 17 torna protagonista su Amazon: ...
PowerToys si aggiorna alla versione 0.10...
La nuova Audi Q7 proietta le frecce sull...
Framework blocca tutto: Laptop 13 Pro no...
SSD, Biwin investe oltre metà del...
Samsung Trend Radar 2026: smartphone e s...
Enel entra nella telefonia mobile: il vi...
Arriva il menu contestuale aggiornato di...
GM punta sulle batterie al sodio per lo ...
Instagram amplia il controllo sull'algor...
Jason Wild: "Siamo bravissimi a ris...
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: 21:46.


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