Files
2015-02-24 13:37:37 +01:00

124 lines
2.8 KiB
Java

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;
public class SaveLoad {
public static void saveFile(Object obj)
{
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.isFile() && pathname.getName().endsWith(".agn"))
{
return true;
}else if(pathname.isDirectory()){return true;}else{return false;}
}
@Override
public String getDescription() {
return "Agenda (.agn)";
}
});
fileChooser.setDialogTitle("Choose save location");
int userSelection = fileChooser.showSaveDialog(null);
if(userSelection == JFileChooser.APPROVE_OPTION)
{
File file = fileChooser.getSelectedFile();
if(!file.getName().endsWith(".agn"))
{
file = new File(file.getAbsolutePath() + ".agn");
}
if(file.exists())
{
if(JOptionPane.showConfirmDialog(null, "Are you sure you want to overwrite: " + file.getName(), "Overwrite", JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION)
{
save(obj, file);
}
}
else
{
save(obj, file);
}
}
}
public static Object loadFile()
{
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.isFile() && pathname.getName().endsWith(".agn"))
{
return true;
}else if(pathname.isDirectory()){return true;}else{return false;}
}
@Override
public String getDescription() {
return "Agenda (.agn)";
}
});
fileChooser.setDialogTitle("Choose file");
int userSelection = fileChooser.showOpenDialog(null);
if(userSelection == JFileChooser.APPROVE_OPTION)
{
File file = fileChooser.getSelectedFile();
if(!file.exists())
{
JOptionPane.showMessageDialog(null, "This file does not exist: " + file.getName());
}
else
{
return load(file);
}
}
return null;
}
private static void save(Object obj, File file)
{
ObjectOutputStream oostr = null;
try {
oostr = new ObjectOutputStream(new FileOutputStream(file));
oostr.writeObject(obj);
oostr.flush();
oostr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static Object load(File file)
{
ObjectInputStream oistr = null;
try {
oistr = new ObjectInputStream(new FileInputStream(file));
Object obj = oistr.readObject();
oistr.close();
return obj;
} catch (IOException | ClassNotFoundException e) {
return null;
}
}
}