$20
Write a Java program to imitate a file system of an operating system.
In your solution, design a class called BasicFile with options to carry out the following operations:
(a) Select and open an input file using a file dialog box.
(b) Make a copy of the file, whether it is a text file or an image file.
(c) Write to an output file with the option of either appending to the file, or over-writing the contents of the file.
(d) Display the following attributes of the input file in a scrollable screen:
i. The absolute path of the file
ii. Files and directories that are in the path of the file.
iii. The size of the file in kilobytes.
iv. The number of lines in the file, if the is a text file.
(e) Display the contents of the input file in a scrollable pane.
(f) Search the input file line by line for a given string. The output must contain the line number, followed by the contents of the line that contains the search argument. For instance given the following the search string: Java, the program would search the file line by line generating a result such as the following:
50: on the island of Java
95: The people of JAVA loves jaVa.
(g) Tokenize the input file so that program recognizes all printable characters on the keyboard.
You may utilize the classes BasicFile and TestBasicFile in the textbook as a source of reference.
import javax.swing.JFileChooser;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.JOptionPane;
public class BasicFile
{
File f;
public BasicFile()
{
JFileChooser choose = new JFileChooser(".");
int status = choose.showOpenDialog(null);
try
{
if (status != JFileChooser.APPROVE_OPTION)
throw new IOException();
f = choose.getSelectedFile();
if (!f.exists())
throw new FileNotFoundException();
}
catch(FileNotFoundException e)
{
display(e.toString(), "File not found ....");
}
catch(IOException e)
{
display(e.toString(), "Approve option was not selected");
}
}
void display(String msg, String s)
{
JOptionPane.showMessageDialog(null, msg, s, JOptionPane.ERROR_MESSAGE);
}
// Other methods may be included
}
------------------------------------------------------------------------------TestFile-------------------------------------------------------------------------------
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import java.io.IOException;
class TestFile
{
public static void main(String[] arg)
{
boolean done = false;
BasicFile f = null;
String menu = "Enter option\n1. Open File\n.......\n.......\nYou are responsible for any other cases\n.......\n..........\n4.Quit";
while(!done)
{
String s = JOptionPane.showInputDialog( menu);
try
{
int i = Integer.parseInt(s);
switch(i)
{
case 1:
f = new BasicFile();
display(f.getContents());
break;
/*
*.
*.You are responsible for any other cases
*.
*/
case 4:
done = true;
break;
default:
display("This option is underfined", "Error");
break;
}
}
catch(NumberFormatException | NullPointerException | IOException e)
{
display(e.toString(), "Error");
}
}
}
static void display(String s, String err)
{
JOptionPane.showMessageDialog(null, s, err, JOptionPane.ERROR_MESSAGE);
}
static void display(String s)
{
JOptionPane.showMessageDialog(null, s, "Content", JOptionPane.ERROR_MESSAGE);
}
static void display(BasicFile f)
{
String s = f.getFileSize() + " bytes" + "\n" + f.getPath();
String fn = f.getName();
JOptionPane.showMessageDialog(null, s , "Filename: " + fn, JOptionPane.INFORMATION_MESSAGE);
}
}