Java 在内部存储器中本地创建json文件时出错
我想在服务器内部存储json文件。为此,我使用下面的方法。但我犯了个错误。请帮忙Java 在内部存储器中本地创建json文件时出错,java,android,json,offline-caching,Java,Android,Json,Offline Caching,我想在服务器内部存储json文件。为此,我使用下面的方法。但我犯了个错误。请帮忙 try { final String TESTSTRING =jsonBranchArray.toString(); FileOutputStream fOut = openFileOutput("samplefile.json",
try {
final String TESTSTRING =jsonBranchArray.toString();
FileOutputStream fOut = openFileOutput("samplefile.json",
MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(TESTSTRING);
osw.flush();
osw.close();
FileInputStream fIn = openFileInput("samplefile.json");
InputStreamReader isr = new InputStreamReader(fIn);
char[] inputBuffer = new char[TESTSTRING.length()];
isr.read(inputBuffer);
String readString = new String(inputBuffer);
boolean isTheSame = TESTSTRING.equals(readString);
Log.i("File Reading stuff", "success = " + isTheSame);
} catch (IOException ioe) {
ioe.printStackTrace();
}
错误是。。08-02 12:26:13.449:W/dalvikvm(23547):threadid=1:线程以未捕获异常退出(组=0x40015560)
08-02 12:26:13.459:E/AndroidRuntime(23547):致命异常:主
08-02 12:26:13.459:E/AndroidRuntime(23547):java.lang.NullPointerException
08-02 12:26:13.459:E/AndroidRuntime(23547):位于com.example.MainActivity.WriteToFile(MainActivity.java:224)
08-02 12:26:13.459:E/AndroidRuntime(23547):位于com.example.MainActivity.onClick(MainActivity.java:90)
08-02 12:26:13.459:E/AndroidRuntime(23547):在android.view.view.performClick(view.java:2485)
08-02 12:26:13.459:E/AndroidRuntime(23547):在android.view.view$PerformClick.run(view.java:9080)
08-02 12:26:13.459:E/AndroidRuntime(23547):在android.os.Handler.handleCallback(Handler.java:587)
08-02 12:26:13.459:E/AndroidRuntime(23547):在android.os.Handler.dispatchMessage(Handler.java:92)上
08-02 12:26:13.459:E/AndroidRuntime(23547):在android.os.Looper.loop(Looper.java:123)
08-02 12:26:13.459:E/AndroidRuntime(23547):位于android.app.ActivityThread.main(ActivityThread.java:3683)
08-02 12:26:13.459:E/AndroidRuntime(23547):位于java.lang.reflect.Method.Invokenactive(本机方法)
08-02 12:26:13.459:E/AndroidRuntime(23547):位于java.lang.reflect.Method.invoke(Method.java:507)
08-02 12:26:13.459:E/AndroidRuntime(23547):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-02 12:26:13.459:E/AndroidRuntime(23547):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-02 12:26:13.459:E/AndroidRuntime(23547):在dalvik.system.NativeStart.main(本机方法)
示例json是
{
"Title" : "........Name....",
"Logo" : "http://test/1.jpg",
"ID" : "1015",
"Contact":{
"Title" : " something ",
"Image" : "http://test/1.jpg",
"ID" : "1016",
"Full Address" : " something something something something something ",
"Contact No" : ".....Post Date with Time....",
"Mail ID" : ".....Start Date with Time....",
"SiteLink" : "...wwww.abc.com......",
"LandLine No" : ".....End Date with Time...."
},
"Activities" : {"News":[
{
"Image" : "http://test/1.jpg",
"ID" : "1017",
"Title" : " something ",
"Description" : " something something something something something ",
"Date" : ".....Post Date...."
},{
"Image" : "http://test/2.jpg",
"ID" : "1018",
"Title" : " something ",
"Description" : " something something something something something ",
"Date" : ".....Post Date...."
},{
"Image" : "http://test/3.jpg",
"ID" : "1019",
"Title" : " something ",
"Description" : " something something something something something ",
"Date" : ".....Post Date...."
},{
"Image" : "http://test/4.jpg",
"ID" : "1020",
"Title" : " something ",
"Description" : " something something something something something ",
"Date" : ".....Post Date...."
},{
"Image" : "http://test/5.jpg",
"ID" : "1021",
"Title" : " something ",
"Description" : " something something something something something ",
"Date" : ".....Post Date...."
},{
"Image" : "http://test/6.jpg",
"ID" : "1022",
"Title" : " something ",
"Description" : " something something something something something ",
"Date" : ".....Post Date...."
},{
"Image" : "http://test/7.jpg",
"ID" : "1023",
"Title" : " something ",
"Description" : " something something something something something ",
"Date" : ".....Post Date...."
}
],
"Events":[
{
"Image" : "http://test/7.jpg",
"ID" : "1024",
"Title" : " something ",
"Description" : " something something something something something ",
"Location" : "......Event Loc......",
"Start Date" : ".....Start Date with Time....",
"End Date" : ".....End Date with Time...."
},{
"Image" : "http://test/3.jpg",
"ID" : "1025",
"Title" : " something ",
"Description" : " something something something something something ",
"Location" : "......Event Loc......",
"Start Date" : ".....Start Date with Time....",
"End Date" : ".....End Date with Time...."
},{
"Image" : "http://test/4.jpg",
"ID" : "1026",
"Title" : " something ",
"Description" : " something something something something something ",
"Location" : "......Event Loc......",
"Start Date" : ".....Start Date with Time....",
"End Date" : ".....End Date with Time...."
},{
"Image" : "http://test/1.jpg",
"ID" : "1027",
"Title" : " something ",
"Description" : " something something something something something ",
"Location" : "......Event Loc......",
"Start Date" : ".....Start Date with Time....",
"End Date" : ".....End Date with Time...."
}
]...as so on
从错误中我可以看到,您并没有使用异步任务并生成网络请求,请添加一个异步任务并在单独的线程中执行网络请求!
class GetContacts扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的Void doInBackground(Void…参数){
DefaultHttpClient httpclient=新的DefaultHttpClient();
试一试{
HttpGet HttpGet=新HttpGet(
“网址”);
HttpResponse response=httpclient.execute(httpget);
字符串jsonResp=EntityUtils.toString(response.getEntity());
Log.d(“HTTP”,“Rsponse:+jsonResp”);
JSONObject JSONObject=新的JSONObject(jsonResp);
///在此处添加您的代码----------------------------------------->
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
}
}
1)使用source
标记发布堆栈跟踪,以便于阅读。2) 在代码中突出显示这一行,异常源自com.example.MainActivity.WriteFile(MainActivity.java:224)
MainActivity.java的第224行是什么?(在com.example.MainActivity.WriteToFile(MainActivity.java:224))我不得不说,这是我见过的最好的过度管理的例子。这么多的文本只说这么少。final String TESTSTRING=jsonBranchArray.toString()--第224行@user387910。。。。是否正在更新onPostExecute
中与UI相关的值?否。。我试图从url获取数据并将其保存在内存中。@user387910。。。。在doInBackground
中尝试从url
获取数据,并在onPostExecute
中将其保存在内存中!嗯。。我也这么做了。。但最终字符串TESTSTRING=jsonBranchArray.toString()中出现错误;--这条线。。
class GetContacts extends AsyncTask<Void, String, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httpget = new HttpGet(
"url");
HttpResponse response = httpclient.execute(httpget);
String jsonResp = EntityUtils.toString(response.getEntity());
Log.d("HTTP","Rsponse : "+ jsonResp);
JSONObject jsonObject = new JSONObject(jsonResp);
/// ADD YOUR CODE HERE------------------------------------------------------------->
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
}
}