IDEA中项目模组实际的文件夹位置关系

在这样一个结构的项目中测试p309 例子4,

  

  项目名为ToDo,有三个模组,其中并没有与ToDo同名的模组,Test即是本次的测试代码。

  Test.java

import java.io.File;  

import java.io.FileInputStream;  

import java.io.IOException;  

import java.io.InputStream;  

  

public class Test {  

    public static void main(String[] args) {  

        int n = -1;  

        byte[] a =new byte[100];  

        try {  

            File file = new File("src\\Test.java");  

            InputStream in = new FileInputStream(file);  

            while ((n=in.read(a,0,100)) != -1) {  

                String s = new String(a,0,n);  

                System.out.println(s);  

            }  

            in.close();  

        }catch (IOException e) {  

            System.out.println("File read error" + e);  

        }  

    }  

}


运行发现报错,没有找到Test.java,不能进行读操作。也就是说初始目录并不在模组ToDoList上。

为了找到初始目录,创建一个文件,找到它的位置来定位初始目录

修改Test.java

  1. import java.io.File;  
    
    import java.io.FileInputStream;  
    
    import java.io.IOException;  
    
    import java.io.InputStream;  
    
      
    
    public class Test {  
    
        public static void main(String[] args) {  
    
            int n = -1;  
    
            byte[] a =new byte[100];  
    
            try {  
    
                File file = new File("new.txt");  
    
                if(!file.exists()) {  
    
                    file.createNewFile();  
    
                }  
    
                /*InputStream in = new FileInputStream(file); 
    
                while ((n=in.read(a,0,100)) != -1) { 
    
                    String s = new String(a,0,n); 
    
                    System.out.println(s); 
    
                } 
    
                in.close();*/  
    
            }catch (IOException e) {  
    
                System.out.println("File read error" + e);  
    
            }  
    
        }  
    
    }

然后在ToDo文件夹下找到new.txt

因此例子4的修改如下

  1. import java.io.File;  

  1. import java.io.FileInputStream;  

  1. import java.io.IOException;  

  1. import java.io.InputStream;  

  1.   

  1. public class Test {  

  1.     public static void main(String[] args) {  

  1.         int n = -1;  

  1.         byte[] a =new byte[100];  

  1.         try {  

  1.             File file = new File("..\\ToDoList\\src\\Test.java");  

  1.             InputStream in = new FileInputStream(file);  

  1.             while ((n=in.read(a,0,100)) != -1) {  

  1.                 String s = new String(a,0,n);  

  1.                 System.out.println(s);  

  1.             }  

  1.             in.close();  

  1.         }catch (IOException e) {  

  1.             System.out.println("File read error"+e);  

  1.         }  

  1.     }  

  1. }

..表示上一个目录即父目录。这次程序能够正常运行

本次的文件夹结构特点,各个与项目名不同名的模组单独成一个与项目文件夹同级的文件夹,均位于IdeaProject中,里面只有一个src文件夹而没有out文件夹,因此.class文件储存在项目文件夹的out文件夹中。若有模组与项目同名,则共用一个文件夹。

我这次的实例来说,文件夹结构是这样的

    ​    ​ToDo的out存放项目下所有模组的字节码文件,

    ​    ​不同名模组下只有src文件夹。

       ​ 值得注意的是,一个模组下还可以创建子模组,包下也可以创建子包。

        ​这样来看书本的例子并不是在Idea下写的,因此某些地方照着书上写的话会出错。而事实上Idea不同的地方不止这个,比如说我最近发现的Idea的run其实并不是控制台,而是重定向的自己的窗口。从而导致在控制台下能够使用的比如清空屏幕输出的方法在Idea下是没有效果的。

猜你喜欢

转载自blog.csdn.net/m0_64198455/article/details/128491118