在我的FileNotFoundException
方法中尝试使用JSONReader
将文件加载到InputStream
时,我不断收到onCreate
错误。
我已经在一个简单的Java程序中测试了此代码,它似乎可以正常工作,并且还可以读取JSON文件。但是,在Android Studio中,我一直收到FileNotFoundException
。
我错误地引用了文件的位置吗?
这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
List<String> linksList = new ArrayList<>();
try {
JsonReader reader = null;
reader = new JsonReader(new FileReader("/assets/test.json"));
reader.beginArray();
while (reader.hasNext()) {
String value = reader.nextString();
linksList.add(value);
}
reader.endArray();
reader.close();
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
这是日志-
12-27 11:56:11.342 20703-20703/com.adam.jsonreader W/System.err: java.io.FileNotFoundException: /assets/test.json (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:99)
12-27 11:56:11.343 20703-20703/com.adam.jsonreader W/System.err: at java.io.FileReader.<init>(FileReader.java:58)
at com.adamkhora.jsonreader.HomeActivity.onCreate(HomeActivity.java:43)
这是我的项目结构:
答案 0 :(得分:1)
代替df1 <- structure(list(id = c("111.txt", "112.txt", "113.txt", "114.txt",
"115.txt", "116.txt"), `1_1` = c(NA, NA, NA, NA, NA, NA), `1_2` = c(NA,
NA, NA, NA, NA, NA), `1_3` = c(NA, NA, NA, NA, NA, NA), `1_4` = c(NA,
NA, NA, NA, NA, NA), `1_5` = c(NA, NA, NA, NA, NA, NA), `1_6` = c(NA,
NA, NA, NA, NA, NA), `1_7` = c(NA, NA, NA, NA, NA, NA), `1_8` = c(NA,
NA, NA, NA, NA, NA), `1_9` = c(NA, NA, NA, NA, NA, NA), `1_10` = c(NA,
NA, NA, NA, NA, NA), `1_freq` = c(NA, NA, NA, NA, NA, NA)),
class = "data.frame", row.names = c(NA,
-6L))
df2 <- structure(list(id = c("111.cats", "112.cats", "113.cats", "114.cats",
"115.cats", "116.cats"), cats = c("1,7,1", "1,1,2|1,3,2", "1,10,1|1,6,2",
"1,4,2", "1,5,1", "1,1,2|1,8,1")), class = "data.frame", row.names = c(NA,
-6L))
使用
new FileReader("/assets/test.json")
您需要使用new BufferedReader(new InputStreamReader(getAssets().open("test.json"), StandardCharsets.UTF_8));
方法在android中使用资产。
答案 1 :(得分:0)
只需在以下代码段中使用文件名即可
try {
InputStream is = context.getAssets().open("test.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;
}