2013-12-21 2 views
0

У меня есть база данных в mysql с полем userId, userName etc,. отсюда Я получаю userid по некоторым критериям.сравнить имя файла с целым числом

У меня есть папка с файлами, а имя файла - userId. Я хочу сравнить полученные userId с этими файлами, и если они соответствуют дальнейшим процессам этих файлов.

Я пробовал этот код, но его исключение формата номера. не в состоянии понять, почему?

package read; 

import java.io.*; 
import java.util.*; 
import java.sql.*; 
public class read1 { 
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
static final String DB_URL = "jdbc:mysql://localhost/test"; 
static final String USER = "root"; 
static final String PASS = "root"; 
public static void main(String args[])throws Exception{ 
    Connection conn = null; 
    Statement stmt = null; 
    try{ 

    Class.forName("com.mysql.jdbc.Driver"); 
    System.out.println("Connecting to database..."); 
    conn = DriverManager.getConnection(DB_URL,USER,PASS); 
    System.out.println("Creating statement..."); 
    stmt = conn.createStatement(); 
    String sql; 
    sql = "SELECT userId FROM profile1 where friendCount >200 AND statusCount > 200"; 
    ResultSet rs = stmt.executeQuery(sql); 
    processing p = new processing(); 
    File directory = new File("/home/abc/tweet"); 

    //get all the files from a directory 
    File[] fList = directory.listFiles(); 

    while(rs.next()){ 
    int uid = rs.getInt("userId"); 
    System.out.print("ID: " + uid +"\n"); 
     for (File file : fList){ 
     if(file.isFile()) 
     System.out.println(file.getName()); 
     if(Integer.parseInt(file.getName())== uid) 
     p.process(file.getName());  

       } 
      } 
    } 
    catch(SQLException e){ 
    e.printStackTrace(); 
} 
} 
} 

class processing{ 

    void process(String filename)throws Exception{ 
    FileReader fr = new FileReader("/home/abc/tweet/"+filename); 
     BufferedReader br = new BufferedReader(fr); 

     FileWriter wr = new FileWriter("/home/abc/newtweet/"+filename); 
       String s; 
        String str="Text:"; 
        String a[]; 
      BufferedWriter bw = new BufferedWriter(wr); 
       while ((s = br.readLine()) != null) { 
         if (s.startsWith("Text:")) { // worked 
         a= s.split(" "); 
         for(int k=1;k<a.length;k++) 
          bw.write(a[k]+"\n");   // worked 

         } 
        } 
        br.close(); 
        bw.close(); 

    } 
    } 
+0

Пожалуйста, добавьте полное исключение (включая стек вызовов) к своему сообщению. –

+0

^Также выделите строку №. вызывающее исключение ... –

+0

Мое лучшее предположение, что это оскорбительная строка: if (Integer.parseInt (file.getName()) uid). Вы можете захотеть окружить его блоком 'try-catch', чтобы уловить [' NumberFormatException'] (http://docs.oracle.com/javase/7/docs/api/java/lang/NumberFormatException.html) и пропустить такой имена файлов (если это то, что вы хотите). –

ответ

0

Одной из причин могут быть то, что есть и другие файлы в папке /home/abc/tweet/ с именами, которые не могут быть разобраны как Integer.

Смежные вопросы