Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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项目文件的文件路径_Java_Android_File - Fatal编程技术网

Java 获取本地Android项目文件的文件路径

Java 获取本地Android项目文件的文件路径,java,android,file,Java,Android,File,我想以编程方式访问项目文件夹中包含的特定文件。有办法做到这一点吗?如果是这样的话,我应该把文件放在我的项目文件夹中的什么位置,以及获取文件路径的简单代码是什么 private void saveFileToDrive() { Thread t = new Thread(new Runnable() { @Override public void run() { try {

我想以编程方式访问项目文件夹中包含的特定文件。有办法做到这一点吗?如果是这样的话,我应该把文件放在我的项目文件夹中的什么位置,以及获取文件路径的简单代码是什么

private void saveFileToDrive() {
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    java.io.File spreadsheet = new java.io.File("Untitled spreadsheet.xlsx");
                    String filePath = spreadsheet.getAbsolutePath();
                    System.out.println("file path is"+filePath);

                    URL fileURL = getClass().getClassLoader().getResource("Untitled spreadsheet.xlsx");
                    String filePath2 = fileURL.getPath();
                    System.out.println("file path2 is"+filePath2);

                    java.io.File fileContent = new java.io.File(filePath);
                    FileContent mediaContent = new FileContent("application/vnd.ms-excel", fileContent);

                    File body = new File();
                    body.setTitle(fileContent.getName());
                    body.setMimeType("application/vnd.ms-excel");


                    File file = service.files().insert(body, mediaContent).setConvert(true).execute();

                    if (file != null) {
                        showToast("File uploaded: " + file.getTitle());
                    }
                    else
                             ;
                } catch (UserRecoverableAuthIOException e) {

                    startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
                } catch (IOException e) {

                    e.printStackTrace();
                }
            }
        });
        t.start();
    }

这在很大程度上取决于要访问的文件类型。您可以将文件放在
资产
资源
的相应子目录中(请参阅)。

将文件放在项目的根文件夹中。然后获取文件URL、路径和其他详细信息,如下所示:

   File file = new File("test.txt");
   String filePath = file.getAbsolutePath();
编辑:另一种方式(如果文件位于类路径中,例如,将文件放入“src”文件夹,并确保编译后将其移动到“bin”或“classes”文件夹中):


因此,您希望访问应用程序内部的文件;您希望直接执行此操作,也就是说,从Android上下文(然后使用
[Android.|.]R..
)执行此操作

关于位置,您有两种选择:
res/raw
文件夹或
assets/
文件夹(在
res
父文件夹之外)

从两个音符中进行选择

以原始形式保存的任意文件。要使用原始
InputStream
打开这些资源,请使用资源ID调用
resources.openRawResource()
,资源ID为
R.raw.filename

但是,如果您需要访问原始文件名和文件层次结构,您可以考虑在<代码>资产/< /COD>目录中保存一些资源(而不是<代码> RES/WORD/)。

assets/
中的文件没有资源ID,因此只能使用
AssetManager
读取它们

要直接访问
res/raw/
中的文件,即从Android上下文(然后使用
[Android.|.]R..
)访问文件,您可以执行以下操作:

File file = new File("app/src/main/res/raw/country_data_from_world_bank.xml");
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));

这最好作为一个评论和投票来结束:你只是说“这取决于…”并链接到另一个答案。关键点是,虽然这些机制使数据可用,但它不是java.io.FileMy fileURL被设置为null,尽管我已按照您的建议将文件放在根文件夹中。@JohnRoberts您是否在某些IDE中运行程序,例如eclipse?@JohnRoberts您需要访问文件路径还是文件本身?@JohnRoberts用工作代码更新了答案。现在有两个选择。两人都在工作。尝试其中任何一种方法。此答案都不可行,因为它忽略了这样打包的数据不是文本文件的事实。请注意,接受的答案是错误的。
File file = new File("app/src/main/res/raw/country_data_from_world_bank.xml");
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));