Note that there are some explanatory texts on larger screens.

plurals
  1. PONot able to find files and images under src directory
    primarykey
    data
    text
    <p>In my program, I have three folders listed under src directory: files, sound, images. I am not sure why my code did not detected. When I run the program, I got this message: "java.io.FileNotFoundException: files\7.txt (The system cannot find the path specified)". I have image attached here. Please help.</p> <p>below is my code:</p> <pre><code>package riddle; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.net.URL; import java.util.Random; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.border.Border; import javax.swing.border.CompoundBorder; public class Math_Riddle extends JFrame implements ActionListener { /** * */ private static final long serialVersionUID = 1L; JLabel lblQuestion; JLabel lblImage; JButton bOK; JButton bExit; JPanel radioPanel; JPanel panBottom; JRadioButton[] radioButton; String [] store ; ButtonGroup bg; JButton bNext; JPanel mainPanel; JPanel pRight; JLabel lblCorrect; JLabel lblWrong; int vCorrect = 0; int vWrong = 0; public Math_Riddle() { mainPanel = new JPanel(new BorderLayout()); buildingGUI(); listAllFiles(); innitializeAllComponents(); int fileNumber = generateRandomNumber(); String filePath = "files/" + fileNumber + ".txt"; String strQuestion = readTextFile(filePath); store = strQuestion.toString().split("!!!"); lblQuestion.setText("&lt;html&gt;" + store[0] + "&lt;/html&gt;"); //I need to get the image and display at the center according //to the fileNumber; getTheImageAndDisplay(fileNumber); assignRandomNumberToRadioButton(store[1]); mainPanel.add(lblQuestion, BorderLayout.NORTH); mainPanel.add(radioPanel, BorderLayout.WEST); mainPanel.add(panBottom, BorderLayout.SOUTH); mainPanel.add(lblImage, BorderLayout.CENTER); mainPanel.setPreferredSize(new Dimension(640, 480)); this.getContentPane().add(mainPanel); } private void listAllFiles() { // TODO Auto-generated method stub File file = new File("."); for(String fileNames : file.list()) System.out.println(fileNames); } private void getTheImageAndDisplay(int fileNumber) { // TODO Auto-generated method stub String filePath = "images/"; lblImage.setIcon(new ImageIcon(filePath + fileNumber + ".png")); } private void assignRandomNumberToRadioButton(String sAnswer) { // TODO Auto-generated method stub int number = Integer.parseInt(sAnswer.toString().trim()); System.out.println("number: " + number); Random random = new Random(); int rand = random.nextInt(4); //This is the number of radioButton. System.out.println("rand is: " + rand); radioButton[rand].setText(sAnswer); if(!radioButton[0].getText().equals("")) { radioButton[1].setText("" +( number + 2)); radioButton[2].setText("" + (number - 2)); radioButton[3].setText("" + (number + 1)); } else if(!radioButton[1].getText().equals("")) { radioButton[0].setText("" +( number + 2)); radioButton[2].setText("" + (number - 2)); radioButton[3].setText("" + (number + 1)); } else if(!radioButton[2].getText().equals("")) { radioButton[1].setText("" +( number + 2)); radioButton[0].setText("" + (number - 2)); radioButton[3].setText("" + (number + 1)); } else if(!radioButton[3].getText().equals("")) { radioButton[1].setText("" +( number + 2)); radioButton[2].setText("" + (number - 2)); radioButton[0].setText("" + (number + 1)); } } /** * Construct GUI. */ private void buildingGUI() { lblImage = new JLabel(); bNext = new JButton("Next"); lblQuestion = new JLabel(); bOK = new JButton("OK"); bExit = new JButton("Exit"); lblQuestion.setFont(new Font("Tahoma", Font.PLAIN, 12)); radioPanel = new JPanel(); panBottom = new JPanel(); panBottom.setLayout(new GridLayout(1, 2)); panBottom.add(bOK); panBottom.add(bExit); bg = new ButtonGroup(); radioPanel.setLayout(new GridLayout(4, 1)); radioButton = new JRadioButton[4]; radioButton[0] = new JRadioButton(); radioButton[1] = new JRadioButton(); radioButton[2] = new JRadioButton(); radioButton[3] = new JRadioButton(); radioPanel.setLayout(new GridLayout(10, 1)); radioPanel.add(radioButton[0]); radioPanel.add(radioButton[1]); radioPanel.add(radioButton[2]); radioPanel.add(radioButton[3]); radioPanel.add(new JLabel()); radioPanel.add(new JLabel()); radioPanel.add(new JLabel()); radioPanel.add(bNext); radioPanel.add(new JLabel()); radioPanel.add(new JLabel()); bg.add(radioButton[0]); bg.add(radioButton[1]); bg.add(radioButton[2]); bg.add(radioButton[3]); pRight = new JPanel(); pRight.setLayout(new GridLayout(5, 2)); lblCorrect = new JLabel(); pRight.add(lblCorrect); lblWrong = new JLabel(); pRight.add(lblWrong); pRight.add(new JLabel(" ")); pRight.add(new JLabel(" ")); mainPanel.add(pRight, BorderLayout.EAST); } private int generateRandomNumber() { // TODO Auto-generated method stub Random random = new Random(); int rand = random.nextInt(20); //This is the number of Files in the system. return rand; } private void innitializeAllComponents() { // TODO Auto-generated method stub CompoundBorder border; Border raisedbevel = BorderFactory.createRaisedBevelBorder(); Border loweredbevel = BorderFactory.createLoweredBevelBorder(); border = BorderFactory.createCompoundBorder( raisedbevel, loweredbevel); lblQuestion.setFont(new Font("Tahoma", Font.PLAIN, 18)); lblQuestion.setBorder(BorderFactory.createLineBorder(Color.GREEN)); lblQuestion.setBorder(border); radioPanel.setBorder(border); pRight.setBorder(border); panBottom.setBorder(border); radioButton[0].setFont(new Font("Tahoma", Font.BOLD, 16)); radioButton[1].setFont(new Font("Tahoma", Font.BOLD, 16)); radioButton[2].setFont(new Font("Tahoma", Font.BOLD, 16)); radioButton[3].setFont(new Font("Tahoma", Font.BOLD, 16)); lblCorrect.setFont(new Font("Tahoma", Font.BOLD, 14)); lblCorrect.setForeground(Color.BLUE); lblCorrect.setHorizontalAlignment(JLabel.CENTER); lblWrong.setFont(new Font("Tahoma", Font.BOLD, 14)); lblWrong.setForeground(Color.red); lblWrong.setHorizontalAlignment(JLabel.CENTER); bNext.addActionListener(this); } @SuppressWarnings("resource") private static String readTextFile(String fileName) { // TODO Auto-generated method stub BufferedReader reader; try { reader = new BufferedReader(new FileReader(fileName)); String line = null; StringBuilder stringBuilder = new StringBuilder(); String ls = System.getProperty("line.separator"); try { while(( line = reader.readLine()) != null ) { stringBuilder.append(line); stringBuilder.append(ls); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } return stringBuilder.toString(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } @Override public void actionPerformed(ActionEvent ae) { // TODO Auto-generated method stub if(ae.getSource().equals(bNext)) { //if nothing selected, display a message, //else: get the answer and display. if(!radioButton[0].isSelected() &amp;&amp; !radioButton[1].isSelected() &amp;&amp; !radioButton[2].isSelected() &amp;&amp; !radioButton[3].isSelected()) { JOptionPane.showMessageDialog(this,"Please select an Answer.", "Nothing selected", JOptionPane.OK_OPTION); return; } else //when user select an answer. { String strAnswer = ""; if(radioButton[0].isSelected()) { strAnswer = radioButton[0].getText().trim(); } else if(radioButton[1].isSelected()) { strAnswer = radioButton[1].getText().trim(); } else if(radioButton[2].isSelected()) { strAnswer = radioButton[2].getText().trim(); } else if(radioButton[3].isSelected()) { strAnswer = radioButton[3].getText().trim(); } if(strAnswer.equals(store[1].trim())) { String strCorrect = lblCorrect.getText(); if(strCorrect.equals("")) { strCorrect = "0"; } vCorrect = Integer.parseInt(strCorrect); vCorrect = vCorrect + 1; lblCorrect.setText("" + vCorrect); playSound("correct"); } else { String strWrong = lblWrong.getText(); if(strWrong.equals("")) { strWrong = "0"; } vWrong = Integer.parseInt(strWrong); vWrong = vWrong + 1; lblWrong.setText("" + vWrong); playSound("wrong"); } int fileNumber = generateRandomNumber(); String filePath = "files\\" + fileNumber + ".txt"; System.out.println("filePath: " + filePath); String strQuestion = readTextFile(filePath); store = strQuestion.toString().split("!!!"); lblQuestion.setText("&lt;html&gt;" + store[0] + "&lt;/html&gt;"); System.out.println("store[0] is: " + store[0]); System.out.println("store[1]" + store[1]); clearTextInAllRadioButtons(); assignRandomNumberToRadioButton(store[1]); getTheImageAndDisplay(fileNumber); } } } private void playSound(String sound) { // TODO Auto-generated method stub try { URL url = null; if(sound.equals("correct")) { url = this.getClass().getClassLoader().getResource("sound/ding.wav"); } else if(sound.equals("wrong")) { url = this.getClass().getClassLoader().getResource("sound/buzz.wav"); } AudioInputStream audioIn = AudioSystem.getAudioInputStream(url); // Get a sound clip resource. Clip clip = AudioSystem.getClip(); // Open audio clip and load samples from the audio input stream. clip.open(audioIn); clip.start(); } catch (UnsupportedAudioFileException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (LineUnavailableException e) { e.printStackTrace(); } } private void clearTextInAllRadioButtons() { // TODO Auto-generated method stub radioButton[0].setText(""); radioButton[1].setText(""); radioButton[2].setText(""); radioButton[3].setText(""); bg.clearSelection(); } /** * @param args */ public static void main(String[] s) { Math_Riddle mr = new Math_Riddle(); mr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mr.pack(); mr.setVisible(true); } } </code></pre> <hr> <p>About the File file = new File(resource.toURI()); here is what I tried but still did not work:</p> <pre><code>URL url = null; Random rand = new Random(); int random = rand.nextInt(19); String filePath = "files/" + random + ".txt"; System.out.println("file: " + filePath); url = this.getClass().getClassLoader().getResource(filePath); System.out.println(url.toString().trim()); try { File file = new File(url.toURI()); } catch (URISyntaxException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } File folder = new File("."); for(String fileNames : folder.list()) { System.out.println(fileNames); } BufferedReader reader; try { reader = new BufferedReader(new FileReader(filePath)); String line = null; StringBuilder stringBuilder = new StringBuilder(); String ls = System.getProperty("line.separator"); try { while(( line = reader.readLine()) != null ) { stringBuilder.append(line); stringBuilder.append(ls); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } </code></pre> <p>Below is the error message in eclipse:</p> <p>file: files/5.txt file:/C:/JavaProject/Tesing/bin/files/5.txt .classpath .project .settings bin images src java.io.FileNotFoundException: files\5.txt (The system cannot find the path specified) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(Unknown Source) at java.io.FileInputStream.(Unknown Source) at java.io.FileReader.(Unknown Source) at Testing.actionPerformed(Testing.java:72)</p> <p>when I tried to list all the files/folder. It only listed the folder: bin, images, src....as you see above. Please help. Thanks in advance.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload