Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo zusammen,
ich möchte aus einer Logdatei zeilenweise lesen, die LogDatei ist von der entsprechenden Anwendung noch gebunden. Ist es trotzdem möglich auf diese Datei lesend zuzugreifen, wenn ja wie? Es wäre nämlich nicht sehr komfortabel wenn die Applikation jedes Mal gestoppt werden müsste, damit man die Logdatei lesen kann.
Ich habe es schon mit einem FileInputStream versucht bekomme aber folgende Fehlermeldung:
Code:
java.io.FileNotFoundException: C:\Projekt\Insight\tm1smsg.log (Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird)
Soweit ich weiß kannst du nicht auf Dateien zugreifen die von einer anderen Anwendung zZ. verwendet werden. Aber wenn die Log-Datei schon fertig geschrieben ist (ist sie das!?) warum greift dann das erzeugende Programme noch darauf zu?
programme setzen einen exclusive-flag auf die dateien, die
grade für den schreibmodus geöfnet sind... windows erlaubt dann keinen weiteren zugrff auf diese datieien!
du mußt eine kopie der datei anlegen, um diese dann auszulesen - anschließend zu löschen!
Warum die Anwendung die ganze Zeit zugreift, weiß ich nicht, Die Anwendung ist nicht von mir, möchte nur die LogEinträge hübsch darstellen und sollte daher auf die Datei zugreifen. Die Anwendung die die Logs erzeugt läuft als Windows-Service
programme setzen einen exclusive-flag auf die dateien, die
grade für den schreibmodus geöfnet sind... windows erlaubt dann keinen weiteren zugrff auf diese datieien!
du mußt eine kopie der datei anlegen, um diese dann auszulesen - anschließend zu löschen!
Hallo,
versuche die Datei mit nachstehendem Code zu kopieren:
Code:
public void copyFile(File src, File dest, int bufSize, boolean force) throws IOException
{
if(dest.exists())
{
if(force)
{
dest.delete();
}
else
{
throw new IOException("Cannot overwrite existing file: " + dest.getName());
}
}
byte[] buffer = new byte[bufSize];
int read = 0;
InputStream in = null;
OutputStream out = null;
try
{
in = new FileInputStream(src);
out = new FileOutputStream(dest);
while(true)
{
read = in.read(buffer);
if (read == -1)
{
//-1 bedeutet EOF
break;
}
out.write(buffer, 0, read);
}
}
finally
{
// Sicherstellen, dass die Streams auch
// bei einem throw geschlossen werden.
// Falls in null ist, ist out auch null!
if (in != null)
{
//Falls tatsächlich in.close() und out.close()
//Exceptions werfen, die jenige von 'out' geworfen wird.
try
{
in.close();
}
finally
{
if (out != null)
{
out.close();
}
}
}
}
}
bekomme aber wieder die oben genannte Exception. Wie kann ich dennoch auf die Datei zugreifen.
Wo genau erstellst du denn die Kopie der Datei?
dest ist die Kopie?
Wird denn die Kopie sauber gemacht? Auf die Kopie zuzugreifen sollte ja kein Problem sein....
Du solltest mal die IOException differenzieren, IOException selber ist ja recht pauschal, vielleicht steckt auch was anderes dahinter? FileNotFound oder so und du hast dich bloß verippt?
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird
Und die Exception bekomm ich sobald ich mit einem InputStream auf die Datei zugreifen will, die Datei wird wie schon beschrieben von einer anderen Applikation verwendet und ich bekomme keinen Zugriff darauf. Die Applikation blockiert den Zugriff dauerhaft (solange der Service läuft).
Und nun ist mein Problem irgendwie trotzdem Lesezugriff zu erhalten.