Here is my code:-

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wrie.and.read;

/**
 *
 * @author Administrator
 */
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import javax.swing.*;
public class WrieAndRead {
JFrame frame;
JTextField field;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new WrieAndRead().go();
    }
    public void go() {
        frame = new JFrame("Let's write AND read!");
        JPanel panel = new JPanel();
        frame.setContentPane(panel);
        panel.setBackground(new Color(234, 190, 78));
        field = new JTextField(20);
        JButton button = new JButton("Click me to write to a text file!");
        JButton button2 = new JButton("Click me to read from a text file!");
        panel.add(field);
        panel.add(button);
        panel.add(button2);
        button.addActionListener(new A1());
        button.addActionListener(new A2());
        frame.setSize(300, 300);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    private class A1 implements ActionListener {
        public void actionPerformed(ActionEvent ev) {
            try {
            FileWriter w1 = new FileWriter("WrittenText.txt");
            String s = field.getText();
            w1.write(s);
            w1.close();
            }
            catch (Exception ex) { ex.printStackTrace(); }
        }
    }
    private class A2 implements ActionListener {
        public void actionPerformed(ActionEvent ev) {
            try {
            File f = new File("WrittenText.txt");
            FileReader r1 = new FileReader(f);
            BufferedReader r2 = new BufferedReader(r1);
            String st = r2.readLine();
            JOptionPane.showMessageDialog(frame, st);
            r2.close();
            }
            catch (Exception ex) { ex.printStackTrace(); }
        }
    }
}

Here is my exception:-

java.io.FileNotFoundException: WrittenText.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileReader.<init>(FileReader.java:72)
at wrie.and.read.WrieAndRead$A2.actionPerformed(WrieAndRead.java:57)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

My question:-
Why is this exception coming and how do I solve it?

Edited 4 Years Ago by jackbauer24: n/a

I really can't think of a clearer way to explain this exception than the version you already have

WrittenText.txt (The system cannot find the file specified)

You solve it by having the same file name for the file you write and the file you read. (count the "t"s in those file names - you're gonna be so embarrassed ;))

All my code is there and I am creating a new text file directly through FileWriter.
SIX Ts!!!!!

check line 45

...and the number of t's in the filename there ;)

Edited 4 Years Ago by zeroliken: n/a

I corrected the number of t's there, check it and here is a new exception when I try to write:-


java.io.FileNotFoundException: WrittenText.txt (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileReader.<init>(FileReader.java:72)
at wrie.and.read.WrieAndRead$A2.actionPerformed(WrieAndRead.java:57)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Look:-

I am trying to make a new text file DIRECTLY through FileWriter(that means the text file DOES NOT already exist).
So please explain my problem.

If you look at where the exception is being thrown you will see that its in A2's actionPerformed. That's the code that reads the file. Check around line 37 for a missing digit.

Here is another program's code and exception:-

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package projects.beginner;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.io.*;
import java.util.Iterator;
import javax.swing.*;

/**
 *
 * @author Administrator
 */
public class BestFriendNames {
ArrayList names;
JTextField field;
JFrame frame;
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new BestFriendNames().go();
    }
    public void go() {
        frame = new JFrame("Best friend name storage");
        JPanel panel = new JPanel();
        panel.setBackground(new Color(123, 234, 213));
        frame.setContentPane(panel);
        JButton add = new JButton("Add");
        field = new JTextField(20);
        JButton save = new JButton("Save");
        JButton load = new JButton("Load");
        add.addActionListener(new addListener());
        save.addActionListener(new saveListener());
        load.addActionListener(new loadListener());
        panel.add(field);
        panel.add(add);
        panel.add(save);
        panel.add(load);
        frame.setSize(300, 300);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public class addListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            String name = field.getText();
            names.add(name);
        }
        
    }
    public class saveListener implements ActionListener, Serializable {
        public void actionPerformed(ActionEvent e) {
            try {
            FileOutputStream fos = new FileOutputStream("BestFriends.ser");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(names);
            }
            catch(Exception ec) { ec.printStackTrace(); }
        }
    }
    public class loadListener implements ActionListener, Serializable {
        public void actionPerformed(ActionEvent e) {
            try {
            FileInputStream fis = new FileInputStream("BestFriends.ser");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Object a = ois.readObject();
            String[] l = (String[]) a;
            for (int i = 0; i < l.length; i++) {
                JOptionPane.showMessageDialog(frame, a);
            }
            }
            catch(Exception ec) { ec.printStackTrace(); }
        }
    }
}

Exception:-

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at projects.beginner.BestFriendNames$addListener.actionPerformed(BestFriendNames.java:56)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

This is a completely different topic, and should really be in a new thread - you shouldn't just keep a handy thread open to post random questions in.

Anyway. The exception says you have a null pointer (uninitialised variable) on line 56 of BestFriendNames$addListener.actionPerformed. That line reads
names.add(name);
there are just two variables in that line, and name is initialised on the line above, Q.E.D. names is uninitialised. And a quick scan of the code confirms that. You declare names on line 24, but you never initialise it.

But both are related to exceptions, aren't they?
Thread is being marked solved. Thanks!

Edited 4 Years Ago by jackbauer24: n/a

This question has already been answered. Start a new discussion instead.