Grandezza File

Stato
Discussione chiusa ad ulteriori risposte.

imported_opocaj

Utente Silver
18 Dicembre 2007
215
10
0
98
Prendo di peso questo esercizio dal forum di BlackLight:
dato in input il path di un file determinarne l'ordine di grandezza (Byte, Kilobyte ecc...)
[Python]
Codice:
#!/usr/bin/python
from os.path import getsize
try:
    size=getsize(raw_input("Inserisci la locazione del file: "))
    if size/1073741824>0:
        print "Gigabyte"
    elif size/1048576>0:
        print "Megabyte"
    elif size/1024:
        print "Kilobyte"
    else:
        print "Byte"
except:
    print "File non valido"
Good Work ^^
 
In D:
Codice:
import std.file;
import std.string;
import std.stdio;

string GestDim(long dim) {
	if (dim >= 0 && dim < 1024) return toString(dim) ~ " B";
	else if (dim > 1024 && dim < 1048576) return toString(cast(double)(dim) / 1024) ~ " KB";
	else if (dim > 1048576 && dim < 1073741824) return toString(cast(double)(dim) / 1048576) ~ " MB";
	else if (dim > 1073741824 && dim < 1099511627776) return toString(cast(double)(dim) / 1073741824) ~ " GB";
	else return toString(cast(double)(dim) / 1099511627776) ~ " TB";
}

int main(string[] args)
{
	writefln(GestDim(getSize(args[1])));
	return 0;
}
 
in perl:

Codice:
#!/usr/bin/perl
use strict;

my $file=$ARGV[0];
open(FILE,"<$file");
my $size = (-s "$file");
if($size > 1073741824 && $size < 1099511627776){
print "Gigabyte\n";}
elsif($size > 1048576 && $size < 1073741824 ){
print "megabyte\n";}
elsif($size > 1024 && $size < 1048576){
print "Kbyte\n";}
else{print "Byte..\n";}
 
il mio in java:
Codice:
import java.math.*;
import java.io.*;
public class GrandezzaFile{
    public GrandezzaFile(String path){
        try{
            File file=new File(path);
            long asd=new Long("1099511627776");
            long v=new Long(file.length());
            if(v>1024 && v<1048576){
                System.out.println("Kbyte(KB)");
            }if(v>1048576 && v<1073741824){
                System.out.println("Megabyte(MB)");
            }if(v>1073741824 && v<new Long("1099511627776")){
                System.out.println("Gigabyte(GB)");
            }
        }catch(Exception e){
            System.out.println("Error: "+e.getMessage());
        }

    }
}
ed eccone un'altro sempre in java,utilizzando la classe JFileChooser:
Codice:
import javax.swing.*;
import java.math.*;
import java.io.*;
public class GrandezzaFile{
    public GrandezzaFile(){
        try{
            File file=null;
            String dir="";
            JFileChooser jfc=new JFileChooser("C:");
            jfc.setDialogTitle("Apri File");
            jfc.show();
            int response=jfc.showOpenDialog(jfc);
            if(response==JFileChooser.APPROVE_OPTION) { 
                file=jfc.getSelectedFile();
                dir=jfc.getCurrentDirectory().getPath();
            } 
            long asd=new Long("1099511627776");
            long v=new Long(file.length());
            if(v>1024 && v<1048576){
                System.out.println(dir+"\\"+file.getName()+"\t Kbyte(KB)");
            }if(v>1048576 && v<1073741824){
                System.out.println(dir+"\\"+file.getName()+"\t Megabyte(MB)");
            }if(v>1073741824 && v<new Long("1099511627776")){
                System.out.println(dir+"\\"+file.getName()+"\t Gigabyte(GB)");
            }
        }catch(Exception e){
            System.out.println("Error: "+e.getMessage());
        }

    }
}
Per chi non conosce Java:JFileChooser è una classe Java (situata nel package javax.swing) che mette a disposizione in modo molto semplice una GUI che permette di selezionare un file ed eseguire determinate operazioni su di esso.Su questa classe inoltre possono essere associati filtri per mostrare solo dei file con una determinata estensione e molto altro.
API JFileChooser Sun
 
già...
Codice:
JFileChooser jfc=new JFileChooser("C:");
crea un'oggetto di classe JFileChooser con path iniziale "C:/",selezioni il file che ti interessa e premi il tasto open.
Codice:
int response=jfc.showOpenDialog(jfc);
            if(response==JFileChooser.APPROVE_OPTION) {
Grazie a questa if capiamo che è stato premuto il tasto di approvazione quindi prendiamo il file appena selezionato con:
Codice:
file=jfc.getSelectedFile();
molto semplice direi anche se utilizzare una classe da 0 non è sempre semplice,arrivare ad utilizzarla così facilmente a volte ci sbatti un po'!
 
assembler masm32
Codice:
.486
.model	flat, stdcall
option	casemap :none
include windows.inc
include user32.inc
include kernel32.inc

includelib user32.lib
includelib kernel32.lib

.DATA
szPath db "C:\nome file.jpg",0h
szFormat db "%X",0
FinalString db 512 dup (?)

.DATA?

hFileRead HANDLE ?  
.CODE

START:
	invoke CreateFile,addr szPath,GENERIC_READ + GENERIC_WRITE, 0,0,OPEN_EXISTING,0,0
	mov hFileRead,eax
	invoke GetFileSize,hFileRead,NULL
	invoke wsprintf,ADDR  FinalString, ADDR szFormat, EAX
	invoke MessageBox,NULL,ADDR FinalString,ADDR FinalString,MB_OK
	invoke ExitProcess,0h
END START
 
Stato
Discussione chiusa ad ulteriori risposte.