我想以编程方式访问将包含在我的项目文件夹中的特定文件。有没有办法做到这一点?如果是这样,我在我的项目文件夹中放置文件,以及获取文件路径的简单代码是什么?
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();
}
答案 0 :(得分:4)
将文件放在项目的根文件夹中。然后获取文件URL,路径和其他详细信息:
File file = new File("test.txt");
String filePath = file.getAbsolutePath();
编辑:备用方式(如果文件在您的类路径中,例如将文件放在“src”文件夹中,并确保在编译后将其移动到“bin”或“classes”文件夹中):
URL fileURL = getClass().getClassLoader().getResource(fileName);
String fileName = fileURL.getFile();
String filePath = fileURL.getPath();
答案 1 :(得分:0)
这很大程度上取决于您要访问的文件类型。您可以将文件放在assets
或res
的相应子目录中(请参阅Difference between /res and /assets directories)。
答案 2 :(得分:0)
因此,您希望访问应用内部的文件;而你想直接这样做,也就是说,从Android上下文(然后是[android.|<package_name>.]R.<resource_type>.<resource_name>
)。
您有两种选择:res/raw
文件夹或assets/
文件夹(res
父级之外)。
从https://developer.android.com/guide/topics/resources/providing-resources.html
中选择两个音符以原始格式保存的任意文件。要使用原始
InputStream
打开这些资源,请使用资源IDResources.openRawResource()
调用R.raw.filename
。但是,如果需要访问原始文件名和文件层次结构,可以考虑在
assets/
目录中保存一些资源(而不是res/raw/
)。assets/
中的文件未获得资源ID,因此您只能使用AssetManager
来阅读它们。
要直接访问res/raw/
中的文件,即从Android上下文(然后使用[android.|<package_name>.]R.<resource_type>.<resource_name>
),您可以执行以下操作:
File file = new File("app/src/main/res/raw/country_data_from_world_bank.xml");
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));