Avatar billede rudidanmark Nybegynder
03. marts 2004 - 11:44 Der er 5 kommentarer og
2 løsninger

Hente ledig disk plads i Java

Hejsa!
Jeg vil gerne í mit program prøve at checke om der er diskplads nok til at jeg kan kopiere ting osv.
Er der en nem måde at få oplyst antal ledige Bytes på en disk i Java?
MvH. Rudi
Avatar billede arne_v Ekspert
03. marts 2004 - 12:16 #1
Det tror jeg ikke er nemt.

JNI og en DLL lavet i C/C++ kan gøre det.

Men det kræver lidt arbejde at lave.

Kan du ikke nøjes med at starte kopieringen og så catche en IOException ?
Avatar billede _carsten Nybegynder
03. marts 2004 - 13:42 #2
Har hekset noget sammen som er anvendeligt, måske kan du bruge det.
Men duer kun på dansk windows

import java.io.*;
import java.text.*;

public class DiskSpace {
   
    public DiskSpace() {
    }

    public static void main(String[] args) throws IOException {
        String dir = "C:\\";
        String osname = System.getProperty("os.name");
        String command = "cmd";
       
        try{
            Process p = Runtime.getRuntime().exec(command + " /c dir " + dir + " > c:\\dir.txt");
            p.waitFor();
        }
        catch(InterruptedException i){
            i.printStackTrace();
        }
        File f = new File("c:\\dir.txt");
        BufferedReader br = new BufferedReader(new FileReader(f));
        String line;
        String friDiskPlads = "";
       
        while ((line = br.readLine()) != null) {
            if (line.indexOf("byte ledig") > -1) {
                int start = line.lastIndexOf(")") +2;
                int end = line.indexOf("byte ledig") - 1;
                friDiskPlads = line.substring(start, end).trim();
                break;
            }
        }
    br.close();
    f.delete();
    try{
        System.out.println("Fri diskplads " +
                    NumberFormat.getInstance().parse(friDiskPlads).longValue());
    }
    catch(ParseException m){
        m.printStackTrace();
    }
   
    new DiskSpace();
    }
}
Avatar billede bredum Nybegynder
03. marts 2004 - 13:43 #3
Avatar billede bredum Nybegynder
03. marts 2004 - 13:46 #4
Avatar billede bredum Nybegynder
03. marts 2004 - 13:51 #5
Avatar billede mikkelbm Nybegynder
03. marts 2004 - 13:57 #6
Fandt lige dette:

Virker dog kun for Windows!

import java.io.*;
import javax.swing.JOptionPane;

class FreeSpace

    public FreeSpace() 
    {   
        String drive = JOptionPane.showInputDialog("Drive: (eg C, H)");   
       
        try   
        {     
            FileWriter fw = new FileWriter("freespace.vbs");     
            fw.write("set args = wscript.arguments\r\n"+               
                    "drv = args(0)\r\n"+               
                    "Set ws= WScript.CreateObject(\"WScript.Shell\")\r\n"+               
                    "dir = ws.CurrentDirectory & \"\\\"\r\n"+               
                    "Set fso = CreateObject(\"Scripting.FileSystemObject\")\r\n"+               
                    "Set drive = fso.GetDrive(fso.GetDriveName(drv & \":\\\"))\r\n"+               
                    "set file = fso.OpenTextFile(dir & \"freespace.txt\",8,True)\r\n"+               
                    "file.write(drive.FreeSpace)\r\n"+               
                    "file.close");     
            fw.close();     
            Runtime.getRuntime().exec("wscript.exe freeSpace.vbs " + drive);     
            Thread.sleep(2000);       
            File result = new File("freespace.txt");     
            BufferedReader fr = new BufferedReader(new FileReader(result));     
            String freeSpace = fr.readLine();   
            fr.close();     
            result.delete();     
            File vbsFile = new File("freespace.vbs");     
            vbsFile.delete();     
            JOptionPane.showMessageDialog(null,"Free space on "+drive+" drive = "+freeSpace+" bytes");   
       
        }   
        catch(Exception e)
        {
            System.out.println("error - terminating");
        }   
        System.exit(0);       
       
    } 
    public static void main(String[] args)
    {
        new FreeSpace();
    }
}
Avatar billede rudidanmark Nybegynder
03. marts 2004 - 20:18 #7
Tak for de hurtige svar :) Især sidste eksempel var godt!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester