当前位置: 首页 > 知识库问答 >
问题:

java.io.FileNotFoundException:/sys/kernel/hungtask/vm_heart(拒绝权限)

干永丰
2023-03-14

我创建了一个带有两个活动的android应用程序,即MainActivity和DBConfig activity。我有文本输入和一个按钮来保存和读取dbconfig中不同文件上的数据。下面是示例代码:

private void saveFileData(String file_name, String text){
        try {
            FileOutputStream fileOutputStream = openFileOutput(file_name,MODE_PRIVATE);
            fileOutputStream.write(text.getBytes());
            fileOutputStream.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    public String readDataCredentials(String file_name) {
        String text = "";
        try {
            FileInputStream fis = openFileInput(file_name);
            int size = fis.available();
            byte [] buffer = new byte[size];
            fis.read(buffer);
            text = new String(buffer);
            fis.close();
        }catch (IOException e){
            e.printStackTrace();
        }


        return text;
    }

无法使用ReadDataRedentials读取从主活动中的DBconfig创建的文件数据:

public void setConfigurations(){
        dBconfig = new DBconfig();
        //db credentials
//        String hostIP = "", username = "", port = "", password = "", database="";

        hostIP = dBconfig.readDataCredentials("host.txt").trim();
        username = dBconfig.readDataCredentials("username.txt").trim();
        password = dBconfig.readDataCredentials("password.txt").trim();
        port = dBconfig.readDataCredentials("port.txt").trim();
        database = dBconfig.readDataCredentials("database.txt").trim();

 }

我得到以下错误:

java.io.FileNotFoundException: /sys/kernel/hungtask/vm_heart (Permission denied)
        at java.io.FileOutputStream.open0(Native Method)
        at java.io.FileOutputStream.open(FileOutputStream.java:287)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:223)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:110)
        at com.android.server.Watchdog.writeHungtask(Watchdog.java:904)
        at com.android.server.Watchdog.run(Watchdog.java:563)

我需要帮助从MainActivity中的文件中读取数据。

共有1个答案

羊舌兴文
2023-03-14

两点,readDataCredentials(String file_name)代码内部应该在一个循环中,因为available()是关于“由写或读控制器进行的流阻塞”(类似于NIO阻塞html" target="_blank">服务器),因为流的“缓冲区大小”而不是“文件大小”。为了停止循环,您需要知道文件大小,或者您需要放入一个“if条件”,以便在它发现有零时跳读,该代码不检测它是“全部完全读取”还是“部分读取”,只检测进程准备发送多少数据。然而,.txt文件应该在“OS system is running in”目录中,就像提示或终端在同一目录中一样,如果不是,那么这可能至少是您的FileNotFoundException发生了,所以明智的做法是确定它们的实际位置,因为无法保证系统进程在文件系统中运行的位置。在我看来,read(byteArray,0,fileLength)会更简单,除非您真的需要自己开始、停止和管理一个流。

 类似资料: