// Get the text file
File file = new File(Environment.getExternalStorageDirectory()
+ "/Config/GPSListenerminTime.cfg");
// Read text from file
StringBuilder GPSListenerminTime = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
GPSListenerminTime.append(line);
GPSListenerminTime.append('\n');
}
} catch (IOException e) {
// TODO You'll need to add proper error handling here
}
我想从带有此代码的文件中读取一个数字并且效果很好,但是如何在requestLocationUpdates中将该数字用作long值? 我尝试以这种方式使用它,但它不起作用:
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, Long.valueOf(String.valueOf(GPSListenerminTime)), 0, this);
我的文件只包含这个数字:10000 当我盯着服务时,我收到了这个错误:
08-07 15:32:45.599: E/AndroidRuntime(19878): java.lang.RuntimeException:
Unable to create service com.example.gpslog.DataLogService: java.lang.NumberFormatException: 10000
答案 0 :(得分:1)
您目前正在使用Long.valueOf
这封装了Long.parseLong
,因此您可以忽略建议使用该答案的答案。
当您收到数字格式异常时,您的字符串可能包含前导或尾随空格尝试使用;
Long.valueOf(String.valueOf(GPSListenerminTime).trim())
答案 1 :(得分:1)
以下是应该有效的代码段:
long requestLong = Long.parseLong(GPSListenerminTime.toString());
基本上,您将StringBuilder
转换为常规String
,然后让Long
类解析它。
答案 2 :(得分:0)
试试这样:
StringBuilder oBuilder = your_string_builder;
long myLong = Long.parseLong(oBuilder.toString());
答案 3 :(得分:0)
NumberFormatException是解析“1000 / n”字符串的结果。只需使用trim()方法删除所有空字符:
Long.valueOf(yourStringBuilder.toString().trim());