2013-08-07 21 views
-1
// 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中的長整型值? 我試圖用這種方式,但它不工作:如何將Stringbuilder變量變長?

 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

NumberFormatException的是解析 「1000/N」 的字符串的結果。只是刪除所有空字符TRIM()方法:

Long.valueOf(yourStringBuilder.toString().trim()); 
+0

這是工作謝謝你! – Readdeo

+0

嘿,現在@Robadob已經提前將近10分鐘了...... – crocboy

+0

不,他已經在我的後面編輯了他的答案;)無論如何,我給我的+1給他 – birdy

1

Long.valueOf這封裝Long.parseLong,所以你可以忽略建議使用的答案。

當你收到一個數字格式異常時,它可能是你的字符串包含前導或尾隨空白的嘗試使用;

Long.valueOf(String.valueOf(GPSListenerminTime).trim()) 
1

下面是一個代碼片段,應該工作:

long requestLong = Long.parseLong(GPSListenerminTime.toString()); 

基本上,你將你的StringBuilder到正規String,然後讓Long類解析它。

+0

如果你看過他們的代碼,他們使用的是Long.valueOf,這已經封裝的Long.parseLong。 – Robadob

+0

我試過了,String.valueOf但是我得到了相同的numberformatexception。 – Readdeo

0

嘗試這樣的:

StringBuilder oBuilder = your_string_builder; 
long myLong = Long.parseLong(oBuilder.toString());