Files
oop-labs/Lab3/src/main/java/org/lumijiez/base/Document.java

93 lines
2.8 KiB
Java

package org.lumijiez.base;
import org.lumijiez.enums.FileType;
import org.lumijiez.interfaces.IDocument;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.BasicFileAttributes;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Document extends File implements IDocument {
private String extension;
private FileType fileType;
public Document(Path path) {
super(path.toString());
init();
}
private void init() {
int lastDotIndex = getName().lastIndexOf('.');
extension = (lastDotIndex > 0) ? getName().substring(lastDotIndex + 1) : "";
fileType = FileType.getFileType(extension);
}
@Override
public String getExtension() {
return extension;
}
@Override
public String getCreatedTime() {
try {
BasicFileAttributes fileAttributes = Files.readAttributes(Path.of(this.getPath()), BasicFileAttributes.class);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yy");
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
Date date = new Date(fileAttributes.creationTime().toMillis());
String formattedDate = dateFormat.format(date);
String formattedTime = timeFormat.format(date);
return formattedTime + " " + formattedDate;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
public String getModificationTime() {
try {
BasicFileAttributes fileAttributes = Files.readAttributes(Path.of(this.getPath()), BasicFileAttributes.class);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yy");
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");
Date date = new Date(fileAttributes.lastModifiedTime().toMillis());
String formattedDate = dateFormat.format(date);
String formattedTime = timeFormat.format(date);
return formattedTime + " " + formattedDate;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
public FileType getFileType() {
return fileType;
}
@Override
public long getFilesizeKB() {
try {
BasicFileAttributes fileAttributes = Files.readAttributes(Path.of(this.getPath()), BasicFileAttributes.class);
return fileAttributes.size() / 1024;
} catch (IOException e) {
e.printStackTrace();
}
return 0;
}
@Override
public String getInfo() {
return "Name: " + getName() + " Size: " + getFilesizeKB() + "Type: " + getFileType().getTypeName();
}
}