Ich habe eine Zip-Datei auf einem Server.
Wie kann ich überprüfen, ob die Datei größer als 27 MB ist?
File file = new File("U:\intranet_root\intranet\R1112B2.zip");
if (file > 27) {
//do something
}
Ich habe eine Zip-Datei auf einem Server.
Wie kann ich überprüfen, ob die Datei größer als 27 MB ist?
File file = new File("U:\intranet_root\intranet\R1112B2.zip");
if (file > 27) {
//do something
}
Antworten:
Verwenden Sie die length()
Methode der File
Klasse, um die Größe der Datei in Bytes zurückzugeben.
// Get file from file name
File file = new File("U:\intranet_root\intranet\R1112B2.zip");
// Get length of file in bytes
long fileSizeInBytes = file.length();
// Convert the bytes to Kilobytes (1 KB = 1024 Bytes)
long fileSizeInKB = fileSizeInBytes / 1024;
// Convert the KB to MegaBytes (1 MB = 1024 KBytes)
long fileSizeInMB = fileSizeInKB / 1024;
if (fileSizeInMB > 27) {
...
}
Sie könnten die Konvertierung in einem Schritt kombinieren, aber ich habe versucht, den Prozess vollständig zu veranschaulichen.
Beispiel:
public static String getStringSizeLengthFile(long size) {
DecimalFormat df = new DecimalFormat("0.00");
float sizeKb = 1024.0f;
float sizeMb = sizeKb * sizeKb;
float sizeGb = sizeMb * sizeKb;
float sizeTerra = sizeGb * sizeKb;
if(size < sizeMb)
return df.format(size / sizeKb)+ " Kb";
else if(size < sizeGb)
return df.format(size / sizeMb) + " Mb";
else if(size < sizeTerra)
return df.format(size / sizeGb) + " Gb";
return "";
}
Am einfachsten ist es, FileUtils von Apache commons-io zu verwenden ( https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html) )
Gibt die lesbare Dateigröße von Bytes bis Exabytes zurück und rundet sie bis zur Grenze ab.
File fileObj = new File(filePathString);
String fileSizeReadable = FileUtils.byteCountToDisplaySize(fileObj.length());
// output will be like 56 MB
Sie können die Länge der Datei mit File # length () abrufen , wodurch ein Wert in Byte zurückgegeben wird. Sie müssen diesen also durch 1024 * 1024 teilen, um den Wert in MB zu erhalten.
Seit Java 7 können Sie verwenden java.nio.file.Files.size(Path p)
.
Path path = Paths.get("C:\\1.txt");
long expectedSizeInMB = 27;
long expectedSizeInBytes = 1024 * 1024 * expectedSizeInMB;
long sizeInBytes = -1;
try {
sizeInBytes = Files.size(path);
} catch (IOException e) {
System.err.println("Cannot get the size - " + e);
return;
}
if (sizeInBytes > expectedSizeInBytes) {
System.out.println("Bigger than " + expectedSizeInMB + " MB");
} else {
System.out.println("Not bigger than " + expectedSizeInMB + " MB");
}
public static long sizeOf(File file)
Weitere Informationen zur API: http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html
Sie können Teilzeichenfolgen verwenden, um ein Portio von String zu erhalten, das 1 MB entspricht:
public static void main(String[] args) {
// Get length of String in bytes
String string = "long string";
long sizeInBytes = string.getBytes().length;
int oneMb=1024*1024;
if (sizeInBytes>oneMb) {
String string1Mb=string.substring(0, oneMb);
}
}
Sie können FileChannel
in verwendenJava
.
FileChannel verfügt über die size () -Methode, um die Größe der Datei zu bestimmen.
String fileName = "D://words.txt";
Path filePath = Paths.get(fileName);
FileChannel fileChannel = FileChannel.open(filePath);
long fileSize = fileChannel.size();
System.out.format("The size of the file: %d bytes", fileSize);
Sie können die Dateigröße auch mit der Apache Commons
Methode 'FileUtils' sizeOf () bestimmen . Wenn Sie maven verwenden, fügen Sie dies der pom.xml
Datei hinzu.
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
Versuchen Sie die folgende Codierung:
String fileName = "D://words.txt";
File f = new File(fileName);
long fileSize = FileUtils.sizeOf(f);
System.out.format("The size of the file: %d bytes", fileSize);
Diese Methoden geben die Größe in Bytes aus. Um die MB-Größe zu erhalten, müssen Sie die Dateigröße von (1024 * 1024) teilen.
Jetzt können Sie einfach die if-else
Bedingungen verwenden, da die Größe in MB erfasst wird.
Fügen Sie diese irgendwo hinzu und rufen if (myFile.sizeInMb > 27.0)
Sie dann an oder je nachdem, was Sie brauchen:
val File.size get() = if (!exists()) 0.0 else length().toDouble()
val File.sizeInKb get() = size / 1024
val File.sizeInMb get() = sizeInKb / 1024
val File.sizeInGb get() = sizeInMb / 1024
val File.sizeInTb get() = sizeInGb / 1024
Wenn Sie die Arbeit mit einem String oder Uri vereinfachen möchten, fügen Sie Folgendes hinzu:
fun Uri.asFile(): File = File(toString())
fun String?.asUri(): Uri? {
try {
return Uri.parse(this)
} catch (e: Exception) {
}
return null
}
Wenn Sie die Werte einfach als Zeichenfolge anzeigen möchten, sind dies einfache Wrapper. Sie können die angezeigten Standard-Dezimalstellen jederzeit anpassen
fun File.sizeStr(): String = size.toString()
fun File.sizeStrInKb(decimals: Int = 0): String = "%.${decimals}f".format(sizeInKb)
fun File.sizeStrInMb(decimals: Int = 0): String = "%.${decimals}f".format(sizeInMb)
fun File.sizeStrInGb(decimals: Int = 0): String = "%.${decimals}f".format(sizeInGb)
fun File.sizeStrWithBytes(): String = sizeStr() + "b"
fun File.sizeStrWithKb(decimals: Int = 0): String = sizeStrInKb(decimals) + "Kb"
fun File.sizeStrWithMb(decimals: Int = 0): String = sizeStrInMb(decimals) + "Mb"
fun File.sizeStrWithGb(decimals: Int = 0): String = sizeStrInGb(decimals) + "Gb"
String FILE_NAME = "C:\\Ajay\\TEST\\data_996KB.json";
File file = new File(FILE_NAME);
if((file.length()) <= (1048576)) {
System.out.println("file size is less than 1 mb");
}else {
System.out.println("file size is More than 1 mb");
}
Hinweis: 1048576 = (1024 * 1024) = 1 MB Ausgabe: Die Dateigröße beträgt weniger als 1 MB