编译器找不到类Files的方法

时间:2017-02-27 10:42:19

标签: java compiler-errors

所以我应该编写一个小程序来在文件中编写反转字母,但由于某种原因,编译器无法识别Files-Class的任何方法。

这是我的代码:

    import java.io.*;
    import java.nio.*;
    import java.nio.channels.*;
    import java.nio.file.*;
    import static java.nio.file.StandardOpenOption.*;

     class Exercise {
        Path file = Paths.get("C:\\Users\\schuele\\Documents\\GitProjects\\3hit-Grual\\RandomAccess\\Alphabet.txt");
        byte[] data;
        ByteBuffer out;

       if(Files.exists(file)){

        }
    }

奇怪的是,编译器可以找到类Files而不是它的方法。

编译时我收到此消息:

Error:(17, 4) java: illegal start of type
Error:(17, 19) java: <identifier> expected
Error:(17, 20) java: ';' expected
Error:(17, 21) java: illegal start of type
Error:(17, 22) java: <identifier> expected
Error:(17, 23) java: ';' expected

错误全部发生在第17行,即使用Files类的行。

3 个答案:

答案 0 :(得分:2)

你在方法之外编写if块。请添加方法或构造函数。

答案 1 :(得分:1)

您无法直接在class'定义下放置此类代码。您需要将它放在方法,构造函数或匿名初始化块中。 E.g:

class Exercise {
    public static void main(String[] args) { // Here!

        Path file = Paths.get("C:\\Users\\schuele\\Documents\\GitProjects\\3hit-Grual\\RandomAccess\\Alphabet.txt");
        byte[] data;
        ByteBuffer out;

        if (Files.exists(file)) {

        }
    }
}

答案 2 :(得分:0)

你不能这样写if(),你有两个选择:

  1. 使用方法或构造函数。
  2.     public void myMethod(){
           if(Files.exists(file)){
           }
        }
    
    1. 如果您在没有方法或构造函数的情况下需要它,可以将其放在静态块中:
    2.     public class myClass{
      
             {
                if(Files.exists(file)){
      
                }
             }
      
             //or like this :
             static {
                if(Files.exists(file)){
      
                }
             }
          }