javaioexeption读取文件

0kjbasz6  于 2021-07-11  发布在  Java
关注(0)|答案(0)|浏览(225)

我正在尝试让一个opengles应用程序工作,我目前正在工作的着色器。为此,我需要打开src/shaders/中的两个文本文件,下面是我的代码:

private static int LoadShader(String filepath, int type){
      File file = new File(filepath);
      StringBuilder codebuilder = new StringBuilder();
      try{
        BufferedReader reader = new BufferedReader(new FileReader(file));
        String line;
        while((line = reader.readLine())!=null){
          codebuilder.append(line);
          codebuilder.append("\n");
        }
        reader.close();
      }catch(IOException e){
        System.err.println("could not read" + filepath);
        e.printStackTrace();
        System.exit(-1);
      }
//And some other code
}

输入为 String a = "src/shaders/vertexshader.txt", int GLES20.GL_VERTEX_SHADER 以及 String b = "src/shaders/fragmentshader.txt", int GLES20.GL_FRAGMENT_SHADER .
应用程序构建正确,但由于 System.exit(-1); (当我移除它时,它不再崩溃)。
文件路径不是问题,我检查了多次。更糟糕的是,我无法访问任何形式的后门或日志通信与我的程序,因为我只能使用编译器(javan-ide for android)。请帮帮我,这个项目快把我逼疯了。
//编辑
一般来说,我对java和编程都是新手,而且我更多的是来自c++背景,所以try-catch对我来说是比较新的。所以我不完全理解异常处理,它是从opengl教程中复制的。
这个 System.err.println("could not read" + filepath); 以及 e.printStackTrace(); 实际上它们对我不起作用,我只是懒得把它们去掉。
以下是所有这些的实现:

//Constructor of abstract class
//Loadshader is in the same class

public ShaderBase(String vertexfile, String fragmentfile){
      vertexshaderID = LoadShader(vertexfile,GLES20.GL_VERTEX_SHADER);
      fragmentshaderID = LoadShader(fragmentfile,GLES20.GL_FRAGMENT_SHADER);

//And other code
}
//Implementation of abstract class

    private static final String VERT_FILE = "src/shaders/vertexshader.txt";
    private static final String FRAG_FILE = "src/shaders/fragmentshader.txt";

    public StaticShader(){
      super(VERT_FILE,FRAG_FILE);
    }
//And other code
}

还有,这是我的文件系统:我的文件系统
代码主要是opengl上的教程不匹配(https://youtu.be/vs8wls9hf8e)、opengl es(https://youtu.be/qcmjq2_kpks)我在网上找到了一些有用的例子(https://www.learnopengles.com/android-lesson-one-getting-started/)所以如果你有一些很好的辅导建议,请告诉我。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题