我正在尝试编写Java代码以在目录中查找源代码文件。我将编译该文件,然后将其放在其他目录中,程序必须找到该文件,现在我认为我做得对,但每次运行时它仍然会给File not Found
。
import java.util.*;
import java.io.*;
import javax.swing.*;
import java.awt.*;
public class myframe extends JFrame{
public static void main(String args[]) throws IOException
{
myframe g=new myframe();
MyPanel mp=new MyPanel();
g.add(mp);
mp.setSize(1000,1000);
g.setLayout(new BorderLayout());
g.setSize(500,500);
g.setVisible(true);
g.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
class MyPanel extends JPanel
{
File ff,ff2;
JTextArea ta;
JTextField jt;
JScrollPane jsp;
String[] names;
File ff3;
FileInputStream fis;
String t;
String s;
static int flag=0;
MyPanel() throws IOException
{
myframe mf= new myframe();
setLayout(new BorderLayout());
ta= new JTextArea();
jt=new JTextField();
add(ta,"Center");
add(jt,"North");
jsp= new JScrollPane(ta);
add(jsp);
File r =new File("C:/");
t=mf.getClass().getName();
String g=".java";
String s= t+g;
System.out.println(""+s);
File[] array=r.listFiles();
System.out.println("hey");
if(array !=null){
//RecursiveFileList rfl = new RecursiveFileList();
fileList((r));
System.out.println("hey");
}
else
jt.setText("Directory is empty");
}
public void fileList( File dir) throws IOException,NullPointerException{
// fnames = dir.listFiles();
// for(int i=0; i<fnames.length; i++){
// fnames[i].listFiles();
if(dir.isFile()){
//System.out.println("hey");
if((dir.getName()).equals(s)){
flag=1;
System.out.println("hey");
jt.setText(""+dir.getAbsolutePath());
fis= new FileInputStream(dir);
byte[] b= new byte[(int)dir.length()];
fis.read(b);
for(int j=0;j<b.length;j++)
{
ta.append(""+(char)b[j]);
}
return;
}
}
else if (dir.isDirectory()){
File[] fnames=dir.listFiles();
if (fnames !=null){
for(File f4:fnames){
if(f4!=null){
fileList(f4);
if(flag==1){
System.out.println("hey");
return;
}
}
else
jt.setText("Get LOST");
}
}
/*jt.setText(""+fnames[i].getAbsolutePath());
fis= new FileInputStream(fnames[i]);
byte[] b= new byte[(int)fnames[i].length()];
fis.read(b);
for(int j=0;j<b.length;j++)
{
ta.append(""+(char)b[j]);
}*/
}
else if(flag==0)
jt.setText("file not found");
}
}
答案 0 :(得分:1)
您的代码不够清晰,但似乎您只是传递路径为'c:/'的文件对象。这根本不是文件。
实际上这种问题很容易调试。尝试在eclipse中使用调试透视图,监视相应的变量,看看为什么代码会进入你不想要的代码。