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 fra DE-CIX
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: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(); } }