Java:如何修复';FileNotFoundException';在这种情况下?

Java:如何修复';FileNotFoundException';在这种情况下?,java,Java,这是我的代码: import java.io.File; import java.io.IOException; import java.util.Scanner; public class ArrayAnalyser { public static void main(String[] args) throws IOException { int size; double[] array; String f

这是我的代码:

 import java.io.File;
 import java.io.IOException;
 import java.util.Scanner;

 public class ArrayAnalyser {
     
     public static void main(String[] args) throws IOException {
         int size;
         double[] array;

         String fileName = "C:\\Users\\kengock\\Desktop\\Numbers.txt";
         size = getLineNumber(fileName);
         array = new double[size];
         File file = new File(fileName);
         Scanner infile = new Scanner(file);
         int index = 0;
         
         while (infile.hasNext()) {
             array[index] = infile.nextDouble();
             index++;

         }
         
         infile.close();
         System.out.println("The min is " + getSmallest(array));
         System.out.println("The average is " + getAverage(array));
     }

     public static int getLineNumber(String fileName) throws IOException {
         int size = 0;
         File file = new File(fileName);
         Scanner infile = new Scanner(file);
         
         while (infile.hasNext()) {
             size++;
             infile.nextLine();

         }
         
         infile.close();
         return size;
     }
     
     public static double getSmallest(double[] array) {
         double min = array[0];
         for (int i = 0; i < array.length; i++) {
             if (array[i] < min)
                 min = array[i];

         }
         return min;
     }

     public static double getAverage(double[] array) {
         double sum = 0;
         for (int i = 0; i < array.length; i++) {
             sum += (array[i]);

         }
         return sum / array.length;
     }
 }
导入java.io.File;
导入java.io.IOException;
导入java.util.Scanner;
公共类阵列分析器{
公共静态void main(字符串[]args)引发IOException{
整数大小;
双[]阵列;
String fileName=“C:\\Users\\kengock\\Desktop\\Numbers.txt”;
大小=getLineNumber(文件名);
数组=新的双精度[大小];
文件=新文件(文件名);
扫描仪内嵌=新扫描仪(文件);
int指数=0;
while(infle.hasNext()){
数组[索引]=infle.nextDouble();
索引++;
}
infle.close();
System.out.println(“最小值是”+getminimest(数组));
System.out.println(“平均值为”+getAverage(数组));
}
公共静态int getLineNumber(字符串文件名)引发IOException{
int size=0;
文件=新文件(文件名);
扫描仪内嵌=新扫描仪(文件);
while(infle.hasNext()){
大小++;
infle.nextLine();
}
infle.close();
返回大小;
}
公共静态双字节数组(双[]数组){
双最小值=数组[0];
for(int i=0;i
这是我收到的错误消息:

C:\Users\kengock\Desktop>线程“main”中的java ArrayAnalyser异常 java.io.FileNotFoundException:C:\Users\kengock\Desktop(存取被拒。) 在 java.base/java.io.FileInputStream.open0(本机方法)位于 java.base/java.io.FileInputStream.open(FileInputStream.java:212)位于 java.base/java.io.FileInputStream.(FileInputStream.java:154)位于 java.base/java.util.Scanner.(Scanner.java:639)位于 getLineNumber(ArrayAnalyser.java:33)位于 main(ArrayAnalyser.java:13)


我应该如何处理文件路径?

在下面的代码行中,您只提到了文件的路径,而没有提到像
abc.txt这样的名称

String fileName="C:\\Users\\kengock\\Desktop";
应该是这样的:-

 String fileName="C:\\Users\\kengock\\Desktop\\abc.txt";
公共类数组分析器{
公共静态void main(字符串[]args)引发IOException{
File File=新文件(“c:/Users/kengock/Desktop/Numbers.txt”);
double[]arr=readArrayFromFile(文件);
System.out.println(Arrays.toString(arr));
System.out.format(Locale.ENGLISH,“最小值为%.2f\n”,GetMinimest(arr));
System.out.format(Locale.ENGLISH,“平均值为%.2f\n”,getAverage(arr));
}
公共静态双[]readArrayFromFile(文件文件)引发FileNotFoundException{
列表编号=新的ArrayList();
尝试(扫描仪扫描=新扫描仪(文件)){
scan.useLocale(Locale.ENGLISH);
while(scan.hasNext())
add(scan.nextDouble());
}
返回numbers.stream().mapToDouble(i->i.toArray();
}
公共静态双通道(双通道[]arr){
返回Arrays.stream(arr.min().orElse(0);
}
公共静态双平均(双[]arr){
返回Arrays.stream(arr.average().orElse(0);
}
}

Desktop
不是一个常规文件,它是一个文件夹。如果您不提及文件名,您的计算机如何知道该文件名?您提到的文件名是
C:\\Users\\kengock\\Desktop
,但
C:\\Users\\kengock\\Desktop
是一个文件夹,它可能有许多文件。您只需查看y即可发现该打字错误我们的code.String fileName=“C:\\Users\\kengock\\Desktop\\Numbers.txt”不起作用这会让人惊讶,因为在main()方法中,
size=getLineNumber(fileName);
Scanner infle=new Scanner(file);
都需要在try/catch块中。尝试将所有代码放在main()中进入try/catch块并捕获异常:IOException。然后它应该可以工作。String fileName=“C:\\Users\\kengock\\Desktop\\abc.txt”;仍然不能工作@Himanshu Singh
public class ArrayAnalyser {

    public static void main(String[] args) throws IOException {
        File file = new File("c:/Users/kengock/Desktop/Numbers.txt");
        double[] arr = readArrayFromFile(file);
        System.out.println(Arrays.toString(arr));
        System.out.format(Locale.ENGLISH, "The min is %.2f\n", getSmallest(arr));
        System.out.format(Locale.ENGLISH, "The average is %.2f\n", getAverage(arr));
    }

    public static double[] readArrayFromFile(File file) throws FileNotFoundException {
        List<Double> numbers = new ArrayList<>();

        try (Scanner scan = new Scanner(file)) {
            scan.useLocale(Locale.ENGLISH);

            while (scan.hasNext())
                numbers.add(scan.nextDouble());
        }

        return numbers.stream().mapToDouble(i -> i).toArray();
    }

    public static double getSmallest(double[] arr) {
        return Arrays.stream(arr).min().orElse(0);
    }

    public static double getAverage(double[] arr) {
        return Arrays.stream(arr).average().orElse(0);
    }
}