我正在开发一款需要在点击按钮时发送自动电子邮件的应用。我目前遇到的问题是我需要读取一个json文件,当我将资产中存储的json的路径传递给新的FileReader()
时,我得到一个未找到的文件Exception
。这是我如何获得这条道路。 (想知道Uri.parse().toString
是否多余):
private static final String CLIENT_SECRET_PATH =
Uri.parse("file:///android_asset/raw/sample/***.json").toString()
这是我传递给它的方法:
sClientSecrets = GoogleClientSecrets
.load(jsonFactory, new FileReader(CLIENT_SECRET_PATH));
我正在尝试访问的json文件位于android项目目录(/ app / assets /)中app根下的app资源文件夹中
我不确定我在这里做错了什么,但我确定这很简单。请帮助我指出正确的方向。
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用此函数从资源中获取JSON字符串,并将该字符串传递给FileReader。
public String loadJSONFromAsset() {
String json = null;
try {
InputStream is = getActivity().getAssets().open("yourfilename.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
答案 2 :(得分:0)
将文件直接保存在资产目录中,而不是raw-sample。
然后文件路径就像这样
def getSubsetSum(arr1, arr2, target):
diffs = set()
for a in arr1:
diffs.add(target - a)
for b in arr2:
if b in diffs:
return (target -b, b)
return None
希望你的问题能够得到解决..
答案 3 :(得分:0)
@Rohit我能够使用您提供的方法作为起点。唯一的问题是我使用的gmail api需要一个Reader作为参数,而不是一个字符串。这就是我所做的。我不再获得filenotfoundexception。非常感谢你。
public InputStreamReader getJsonStreamReader(String file){
InputStreamReader reader = null;
try {
InputStream in = getAssets().open(file);
reader = new InputStreamReader(in);
}catch(IOException ioe){
Log.e("launch", "error : " + ioe);
}
return reader;
}