Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换布局文件夹和java文件夹中的文件(android studio)_Java_File_Android Studio_Replace_Path - Fatal编程技术网

替换布局文件夹和java文件夹中的文件(android studio)

替换布局文件夹和java文件夹中的文件(android studio),java,file,android-studio,replace,path,Java,File,Android Studio,Replace,Path,如何替换正在运行的应用程序中的某些文件(主要活动文件),例如: /src/main/java/[com.package.name]/home.java /src/main/res/layout/home.xml 与其他文件一起: /src/main/assets/home.java /src/main/assets/home.xml 我试过: protected void onPostExecute(String result) { alertDialog.setMessage(resu

如何替换正在运行的应用程序中的某些文件(主要活动文件),例如:

/src/main/java/[com.package.name]/home.java /src/main/res/layout/home.xml

与其他文件一起:

/src/main/assets/home.java /src/main/assets/home.xml

我试过:

protected void onPostExecute(String result) {
    alertDialog.setMessage(result);
    alertDialog.show();

    if (result.length() == 5) {
        String sourcePath1 = "/src/main/assets/activity_home.xml";
        File source1 = new File(sourcePath1);
        String sourcePath2 = "/src/main/assets/home.java";
        File source2 = new File(sourcePath2);

        String destinationPath1 = "/src/main/res/layout/activity_home.xml";
        File destination1 = new File(destinationPath1);
        String destinationPath2 = "/src/main/java/cz/oscio/oscioosp/home.java";
        File destination2 = new File(destinationPath2);
        try {
            FileUtils.copyFile(source1, destination1);
            FileUtils.copyFile(source2, destination2);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
但它不起作用,我怀疑是错误的文件路径。如果我尝试:

getAssets().open("activity_home.xml")   //Cannot resolve method 'getAssets()'
但无论如何,这在
/src/main/res/layout/
的情况下都没有帮助

编辑:它只能做一次-它会改变应用程序本身,更新代码

报告:

java.io.FileNotFoundException:源“/src/main/assets/activity\u home.xml”不存在 位于org.apache.commons.io.FileUtils.copyFile(FileUtils.java:636) 位于org.apache.commons.io.FileUtils.copyFile(FileUtils.java:606) 位于cz.oscio.oscioosp.logging.onPostExecute(logging.java:112) 位于cz.oscio.oscioosp.logging.onPostExecute(logging.java:33) 位于android.os.AsyncTask.finish(AsyncTask.java:651) 位于android.os.AsyncTask.-wrap1(AsyncTask.java) 位于android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668) 位于android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:148)
位于android.app.ActivityThread.main(ActivityThread.java:5417) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:726) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)


stacktrace很有说服力:
“/src/main/assets/activity_home.xml”不存在
。找不到该文件,因此对其进行处理将引发异常

您可以使用
System.getProperty(“user.dir”)检查应用程序的当前目录。但是,除非您使用某些特定的方法对其进行更改,否则该目录应该是应用程序的根目录


你的路径应该是正确的(据我所知),但正如我在评论中所说,你不应该以
/
开始你的路径,因为路径将被解释为绝对路径,即从你的计算机根目录开始。相反,您的路径应该是
src/main/assets/activity\u home.xml

您的路径以“/”或“/”开头?因为它将被不同的解释我建议我的路径从应用程序开始,所以我只是从应用程序文件夹。。。(比如C:/Users/Public/MYAPP/app/src/main/assets/home.xml),因此我使用了/src/main…我的意思是,如果您的路径以
/
开头,它可能(可能)被解释为非相对路径,即从您的主目录开始。您是否尝试过放置绝对路径(C:/Users/Public/MYAPP/app/src/main/assets/home.xml)?不,这不是一个解决方案,因为此应用程序必须在手机上运行,我需要从(已安装应用程序的)apk文件夹开始。。。我的布局文件夹已经包含相同的命名文件,这不是问题吗?我想要一个新的来替换它…你如何从应用程序根文件夹中找到路径?我做错了吗?谢谢,
src/main/assets/activity_home.xml
好多了:)@Jiří不客气。现在我意识到我应该在我的评论中更加清楚:我发布的第一条评论指出了与这个答案相同的东西(即,相对路径与绝对路径),那是18小时前的事了:祝你度过愉快的一天!不,一开始我没有检查我的if条件,我已经认为我的字符串错了。。。即使认为它是错误的,起初,由于false if条件(虽然我仍然不知道为什么它返回false,但
.lenght()
帮助…导致
System.out.println(result.lenght());
返回5和
System.out.println(result);
返回完成…但现在它工作了:)