2016-10-18 3 views
0

Mit SQL * Loader, um Daten in die Datenbank zu laden, sollten wir wissen, das Format der Quelldaten ist Windows oder Unix.So beurteilen Sie eine TXT-Datei ist ein Windows-Format oder Unix-Format Datei mit Java

Daher, wie können wir das Format der Textdatei mit JAVA bekommen? Wenn wir das Format erhalten können, sollten wir den Formatparameter in der SQL * Loader-ctl-Datei definieren.

+0

Ich glaube nicht, dass Sie nicht wissen müssen, welches Format das ist. SQL \ * Loader akzeptiert beide Formate gerne, wenn ich mich nicht irre. –

+0

Siehe diesen Link für, wie können wir das Format der Textdatei mit [JAVA] (http://stackoverflow.com/questions/207947/how-do-i-get-a-platform-dependent-new-line-character) erhalten – Karthik

+0

@a_horse_with_no_name Ich habe das Problem beim Laden von Windows-Format-Datei von SQL \ * Loader, die in Unix-System ist. Der SQL \ * Loader analysiert die Quelldatei mit einem Fehler. Ich möchte also das Format der Datei mit Java direkt abrufen und es in der ctl-Datei des SQL \ * Loader definieren. Dann wird SQL \ * Loader es richtig behandeln. –

Antwort

0

Ich habe eine Methode gefunden, um diese Frage zu lösen. Hier ist der Code FYI:

public static String getFileType(String filePath){ 
    String fileType =""; 
    int count=0; 
    FileInputStream in=null; 
    try{ 
     in =new FileInputStream(filePath); 
     StringBuffer systemFormat = new StringBuffer(); 
     int i = 0; 
     while((count=in.read())!=-1){ 
      //CR: ASCII: 13 
      if(count == 13){ 
       systemFormat.append(String.valueOf(count)); 
       i++; 
      } 
      //LF: ASCII: 10 
      if(count == 10){ 
       systemFormat.append(String.valueOf(count)); 
       i++; 
      } 
      if(i == 2) break; 
     } 
     if(systemFormat.toString().contains("1313")){ 
      fileType = "Mac"; 
      System.out.println("It's a Mac format file"); 
     }else if(systemFormat.toString().contains("1310")){ 
      fileType = "Windows"; 
      System.out.println("It's a Windows format file"); 
     }else if(systemFormat.toString().contains("1010")){ 
      fileType = "Unix"; 
      System.out.println("It's a Unix format file"); 
     } 
    }catch(FileNotFoundException e) { 
     util.LogWriter.log(e); 
    }catch(IOException e) { 
     util.LogWriter.log(e); 
    } 
    return fileType; 
} 
Verwandte Themen