Ответ 1
Вы должны поместить файл в каталог /assets
или /res/raw
вашего проекта Android. Оттуда вы можете получить его с помощью: Context.getResources().openRawResource(R.raw.filename)
или Context.getResources().getAssets().open("filename")
.
У меня есть локальный файл .json. Я не хочу, чтобы это было на сервере, я просто хочу, чтобы он был включен в мое приложение. Я попытался вставить его непосредственно в Eclipse в моем проекте, но у меня есть FileNotFoundException, я также попытался вставить его в папку рабочей области в Проводнике Windows/Finder и получил то же исключение. Где я должен это поставить?
Спасибо!
Вы должны поместить файл в каталог /assets
или /res/raw
вашего проекта Android. Оттуда вы можете получить его с помощью: Context.getResources().openRawResource(R.raw.filename)
или Context.getResources().getAssets().open("filename")
.
Поместите json файл в папку с ресурсами, я использовал этот метод, как этот
public static String jsonToStringFromAssetFolder(String fileName,Context context) throws IOException {
AssetManager manager = context.getAssets();
InputStream file = manager.open(fileName);
byte[] data = new byte[file.available()];
file.read(data);
file.close();
return new String(data);
}
Во время разбора мы можем использовать метод:
String jsondata= jsonToStringFromAssetFolder(your_filename, your_context);
jsonFileToJavaObjectsParsing(jsondata); // json data to java objects implementation
Дополнительная информация: Блог Prativa
Поместите файл в папку с ресурсами. Вы можете использовать AssetManager open (String fileName) для чтения файла.
В разделе/активы в папке проекта. Если у вас его нет, сделайте это.
У меня была очень схожая потребность. У меня был файл шаблонов ярлыков, который мне нужен для настройки конфигурации принтера Bluetooth, поэтому я включил его в свой каталог ресурсов и скопировал его во внутреннюю память для дальнейшего использования:
private static final String LABEL_TEMPLATE_FILE_NAME = "RJ_4030_4x3_labels.bin";
InputStream inputStreamOfLabelTemplate = getAssets().open( LABEL_TEMPLATE_ASSET_PATH );
labelTemplateFile = new File( getFilesDir() + LABEL_TEMPLATE_FILE_NAME );
copyInputStreamToFile( inputStreamOfLabelTemplate, labelTemplateFile );
printer.setCustomPaper( labelTemplateFile.getAbsolutePath() );
// Copy an InputStream to a File.
//
private void copyInputStreamToFile(InputStream in, File file) {
try {
OutputStream out = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len;
while((len=in.read(buf))>0){
out.write(buf,0,len);
}
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}