2011-08-16 10 views

Odpowiedz

3

nie byłem w stanie znaleźć biblioteki, która ma pisanie, chociaż znalazłem tej klasy do czytania .ov2 pliki:

package readers; 

import java.io.FileInputStream; 
import java.io.IOException; 

public class OV2RecordReader { 

    public static String[] readOV2Record(FileInputStream inputStream){ 
     String[] record = null; 
     int b = -1; 
     try{ 
      if ((b = inputStream.read())> -1) { 
       // if it is a simple POI record 
       if (b == 2) { 
        record = new String[3]; 
        long total = readLong(inputStream); 

        double longitude = (double) readLong(inputStream)/100000.0; 
        double latitude = (double) readLong(inputStream)/100000.0; 

        byte[] r = new byte[(int) total - 13]; 
        inputStream.read(r); 

        record[0] = new String(r); 
        record[0] = record[0].substring(0,record[0].length()-1); 
        record[1] = Double.toString(latitude); 
        record[2] = Double.toString(longitude); 
       } 
       //if it is a deleted record 
       else if(b == 0){ 
        byte[] r = new byte[9]; 
        inputStream.read(r); 
       } 
       //if it is a skipper record 
       else if(b == 1){ 
        byte[] r = new byte[20]; 
        inputStream.read(r); 
       } 
       else{ 
        throw new IOException("wrong record type"); 
       } 
      } 
      else{ 
       return null; 
      } 
     } 
     catch(IOException e){ 
      e.printStackTrace(); 
     } 
     return record; 
    } 

    private static long readLong(FileInputStream is){ 
     long res = 0; 
     try{ 
      res = is.read(); 
      res += is.read() <<8; 
      res += is.read() <<16; 
      res += is.read() <<24; 
     } 
     catch(IOException e){ 
      e.printStackTrace(); 
     } 
     return res; 
    } 
} 

Ja również znaleźć ten kod PHP, aby zapisać plik:

<?php 
$csv = file("File.csv"); 
$nbcsv = count($csv); 
$file = "POI.ov2"; 
$fp = fopen($file, "w"); 
for ($i = 0; $i < $nbcsv; $i++) { 
    $table = split(",", chop($csv[$i])); 
    $lon = $table[0]; 
    $lat = $table[1]; 
    $des = $table[2]; 
    $TT = chr(0x02).pack("V",strlen($des)+14).pack("V",round($lon*100000)).pack("V",round($lat*100000)).$des.chr(0x00); 
    @fwrite($fp, "$TT"); 
} 
fclose($fp); 

Nie jestem pewien, w jaki sposób chcesz napisać klasę Java (lub rozszerzyć powyższą), aby zapisać plik tak, jak działa funkcja PHP, ale możesz uzyskać wgląd w sposób kodowania pliku z tego.

+0

Dziękuję za odpowiedź. Ale prawdę mówiąc, wolałbym mieć bibliotekę gotową do użycia, przetestowaną, obsługiwaną i nie pisać od nowa. – never

Powiązane problemy