Handle + ProcessBuilder: Wer sieht den Fehler?

Status
Nicht offen für weitere Antworten.

jollyroger

Bekanntes Mitglied
Hallo zusammen,

ich verwende unter Windows XP das Microsoft Tool "Handle" um festzustellen ob irgendein Betriebssystem-Prozeß auf eine bestimmte Datei zugreift.

Greift kein Prozess auf eine Datei zu sieht die Ausgabe von Handle z.B. so aus:

Code:
C:\tmp\Handle\handle.exe C:\tmp\foo.iso

Code:
Handle v3.2
Copyright (C) 1997-2006 Mark Russinovich
Sysinternals - [url]www.sysinternals.com[/url]

No matching handles found.

Wird die Datei foo.iso nun beispielsweise gerade erst auf das Laufwerk kopiert sieht die Ausgabe so aus:

Code:
Handle v3.2
Copyright (C) 1997-2006 Mark Russinovich
Sysinternals - [url]www.sysinternals.com[/url]

explorer.exe       pid: 776     A50: C:\tmp\foo.iso

So weit so gut, nun scheitere ich daran das in einem java-Programm zu verwenden...

Hier meine simple main-Klasse:

Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class TestIt {

	public static void main(String[] args){
		
		String pathToFileHandleTool = "C:\\tmp\\Handle\\handle.exe";
		String pathToFile = "C\\:tmp\\foo.iso";
		String expectedFileHandleSuccessOutput = "(.*)No matching handles found(.*)";
		ProcessBuilder builder = null;
		// check for os
		if(System.getProperty("os.name").matches("(.*)Windows(.*)")) {
			System.out.println("we are on windows..");
			builder = new ProcessBuilder( pathToFileHandleTool, pathToFile);
		} else {
			System.out.println("we are on linux..");
			builder = new ProcessBuilder( pathToFileHandleTool, pathToFile);
		}  
		Process process = null;
		String commandOutput = "";
		String line = null;
		BufferedReader bufferedReader = null;
		try {
			process = builder.start();
			// read command output
			bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
	    	while((line = bufferedReader.readLine()) != null) {
	    		commandOutput += line;
	    		System.out.println(line);
	    	}
			// wait till process has finished
			process.waitFor();
		} catch (IOException e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}  catch (InterruptedException e) {
			System.out.println(e.getMessage());
			e.printStackTrace();		}
		// check output to assure that no process uses file
		if(commandOutput.matches(expectedFileHandleSuccessOutput))
			System.out.println("no other processes accesses file!");
		else
			System.out.println("one or more other processes access file!");
	}
}

Greift nun kein anderes Programm auf die Datei zu, ist die Ausgabe wie erwartet:

Code:
we are on windows..

Handle v3.2
Copyright (C) 1997-2006 Mark Russinovich
Sysinternals - [url]www.sysinternals.com[/url]

No matching handles found.
no other processes accesses file!

Wird die Datei aber erst gerade geschrieben, kriege ich exakt die selbe Ausgabe also


Code:
we are on windows..

Handle v3.2
Copyright (C) 1997-2006 Mark Russinovich
Sysinternals - [url]www.sysinternals.com[/url]

No matching handles found.
no other processes accesses file!

obwohl ja, wie in der Kommandozeile, diese Ausgabe


Code:
Handle v3.2
Copyright (C) 1997-2006 Mark Russinovich
Sysinternals - [url]www.sysinternals.com[/url]

explorer.exe       pid: 776     A50: C:\tmp\foo.iso

zu erwarten gewesen wäre.....

Irgendwas scheine ich also falsch zu machen in meinem Programm, nur ich sehe nicht was?

Sieht jemand was ich hier falsch mache?

Danke für alle Tips!
 

kleiner_held

Top Contributor
Zeile 12 in deiner Main Klasse:
Code:
String pathToFile = "C\\:tmp\\foo.iso";
Man vertausche : und \\
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Handle Mutable Objects Allgemeine Java-Themen 2
P Default constructor cannot handle exception type Allgemeine Java-Themen 6
T jmf - Immer "Unable to handle fo rmat:" Allgemeine Java-Themen 2
A Windows Bitmap-Handle in Java verwenden Allgemeine Java-Themen 2
L Super User via Processbuilder (Linux) Allgemeine Java-Themen 3
T ProcessBuilder Output Allgemeine Java-Themen 12
S Command funktioniert in Kommandzeile aber nicht mit ProcessBuilder bzw. Runtime.exec auf MAC Allgemeine Java-Themen 3
H Syntax ProcessBuilder Allgemeine Java-Themen 7
E ProcessBuilder findet Datei nicht Allgemeine Java-Themen 3
V ProcessBuilder exe file Allgemeine Java-Themen 3
D ProcessBuilder und die while() Allgemeine Java-Themen 3
L Input/Output ProcessBuilder und Windows - Konsole verbergen? Allgemeine Java-Themen 5
T ProcessBuilder (java.lang.NoClassDefFoundError) Allgemeine Java-Themen 2
G ProcessBuilder Allgemeine Java-Themen 2
B Externe Programme und ProcessBuilder Allgemeine Java-Themen 5
V Shellscript über ProcessBuilder starten Allgemeine Java-Themen 2
A ProcessBuilder Allgemeine Java-Themen 8
Y ProcessBuilder, Prozess wird gestartet, aber Anwendung nicht Allgemeine Java-Themen 5
B ProcessBuilder: kann Ordner im home nicht finden Allgemeine Java-Themen 2
W Windows XP: ProcessBuilder.start: Kommandoshell anzeigen Allgemeine Java-Themen 3
A Runtime oder ProcessBuilder exe starten Allgemeine Java-Themen 3
N ProcessBuilder Allgemeine Java-Themen 5
N ProcessBuilder Allgemeine Java-Themen 8
F ProcessBuilder - Exception Allgemeine Java-Themen 2
D Formatierte Ausgabe vom ProcessBuilder Allgemeine Java-Themen 4
D ProcessBuilder und Scanner Probleme mit einigen Prozessen Allgemeine Java-Themen 2
F Pfadangabe bei Processbuilder Allgemeine Java-Themen 4
W String -> byte[] -> String - Sieht jemand was ich nicht sehe? Allgemeine Java-Themen 10
N Sieht aus wie ein "Call by Referece/Call by Value" Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben