Newsgroup: it.comp.java
Titolo: File "virtuale"

Ciao.
Ho necessità di usare una funzione che accetta come parametro un oggetto
java.io.File.
Il mio problema è che ho un oggetto che vorrei passare alla funzione, senza
per questo scrivere un file su disco...
E' possibile creare un File, diciamo cosi, in memoria!! e quindi passarlo
alla funzione precedente?!
Sto dicendo sciocchezze?!?!!
Grazie mille per l'aiuto.
Ciao,
Luca.

La creazione di un oggetto File non genera nessuna scrittura o
lettura da e sul disco... sino a che non viene creato uno Stream di dati.
Si tratta solo di un percorso astratto. La creazione o distruzione del
file fisico eventualmente associato al percorso, fanno parte delle
operazioni che si possono applicare all'oggetto.


Si è vero. Il problema è che Paolo deve passare un parametro di tipo File ad
una funzione. Chiedeva se esiste un modo per evitare che il File esista
fisicamente sul disco. La risposta, anche in base a quanto giustamente
facevi notare a proposito di File, è no. Essendo l'oggetto File un
riferimento, il file fisico deve esistere nel file-system. Altrimenti la
funzione che vuole chiamare genererà una FileNotFoundException.
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

Ivan ha scritto:


L'oggetto file è si un riferimento ma non ad uno spazio del file system,
ma ad uno spazio in memoria dove sono archiviate le info sul file stesso
. tra cui anche il suo percorso. L'oggetto File ha anche un metodo
exists() che ti dice se l'oggetto file esiste nel file system oppure no.
L'eccezione FileNotFuondException viene generato solo quando si cerca di
creare od utilizzare uno Stream su quel file.
Quindi secondo me la risposta è SI.
Prova questo codice:
import java.io.*;
public class TestFile{
	public static void main(String[] args){
		File f = new File("C:\\pippo.kk");
		System.out.println("Esiste?? " + esiste(f));
		try{
			InputStream is = getInputStream(f);
			System.out.println("Stream aperto");
			is.close();
			System.out.println("Stream chiuso");
		}catch(FileNotFoundException e){
			System.out.println("File non trovato: " + f.getAbsolutePath());
		}catch(IOException e){
			System.out.println("Eccezione: " + e.getMessage());
		}
	}
	public static boolean esiste(File f){
// Questa funzione non genera eccezioni
		return f.exists();
	}
	public static InputStream getInputStream(File f) throws IOException{
// Questa funzione potrebbe generare eccezioni
		InputStream is = new FileInputStream(f);
		return is;
	}
}
ciao
b.mauro
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:bck04m$mkj$1...@news.newsland.it...

Quanto detto fin'ora mi sembra corretto e ringrazio tutti per l'aiuto.
Pero' mi sorge un dubbio... la famosa funzione che vuole un oggetto File, si
aspetta un file su disco e quindi sicuramente andrà a leggerlo con un
InputStream o sbaglio? Quindi tutto sommato la cosa non funziona comunque!
Il problema è che vorrei che i dati fossero in memoria, cosi la funzione
potrebbe leggerli da li e non dal disco!!!
A questo punto ho forti dubbi che la cosa si possa fare... cmq aspetto un
vostro feedback.
Grazie ancora ragazzi!!!
Ciao,
Luca.

 ha scritto nel messaggio
news:bYnHa.95933$lK4.2...@twister1.libero.it...


 >
