我正在制作一个xml文件并将其保存在我的设备上 代码如下
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://xx:xx:xx:xx:yy/LoginAndroid.asmx/login");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
String responseBody = EntityUtils.toString(response.getEntity());
//Toast.makeText( getApplicationContext(),"responseBody: "+responseBody,Toast.LENGTH_SHORT).show();
//saving the file as a xml
FileOutputStream fOut = openFileOutput("loginData.xml",MODE_WORLD_READABLE);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(responseBody);
osw.flush();
osw.close();
//reading the file as xml
FileInputStream fIn = openFileInput("loginData.xml");
InputStreamReader isr = new InputStreamReader(fIn);
char[] inputBuffer = new char[responseBody.length()];
isr.read(inputBuffer);
String readString = new String(inputBuffer);
FIle 正在保存我也可以读取文件 一切都没问题,但看看这一行
char[] inputBuffer = new char[responseBody.length()];
它正在计算在保存文件时保存的字符串长度。我正在将文件保存在一个 Acivity 中并从另一个活动中读取它,我的应用程序将在本地保存文件一次,所以我无法每次都获取该返回字符串的长度 那么有没有办法动态分配char[] inputBuffer
的大小?
您可以在另一个活动中使用以下代码来读取文件。看看 BufferedReader 类。
InputStream instream = new FileInputStream("loginData.xml");
// if file the available for reading
if (instream != null) {
// prepare the file for reading
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
// read every line of the file into the line-variable, on line at the time
while (buffreader.hasNext()) {
line = buffreader.readLine();
// do something with the line
}
}
编辑:
上面的代码对于读取文件工作正常,但是如果您只想分配char[] inputBuffer
dynamicall的大小,则可以使用以下代码。
InputStream is = mContext.openFileInput("loginData.xml");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
while ((int bytesRead = is.read(b)) != -1) {
bos.write(b, 0, bytesRead);
}
byte[] inputBuffer = bos.toByteArray();
现在,根据需要使用inputBuffer。