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
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
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 ?
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(); } }
03. marts 2004 - 13:43
#3
03. marts 2004 - 13:46
#4
03. marts 2004 - 13:51
#5
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(); } }
03. marts 2004 - 20:18
#7
Tak for de hurtige svar :) Især sidste eksempel var godt!
Kurser inden for grundlæggende programmering