2014-01-27 2 views
-2

Я хочу прочитать строковые данные из файла и должен передать каждую строку в файле для некоторой операции. Для ex, если у моего файла есть ссылки на веб-сайт, я должен извлечь каждую ссылку и проанализировать ее данные Я уже провел парсинг для сайтов, передав URL-адрес в качестве входных данных. Но теперь я думаю, что это выгодно хранить целые ссылки в виде строки и передавать ее как аргумент. Так как я могу прочитать URL-адрес из файла и проанализировать каждый URL-адрес? укажите код для этого?Чтение строковых данных из файла

+2

Вы уже что-то пробовали? – kmera

+0

Я не понимаю – Rose

+1

Вы не понимаете, что? – tilpner

ответ

2

Это код, который я прочитал от Вашего комментария:

File file = new File("myfil"); 
try (FileInputStream fis = new FileInputStream(file)) { 
    int content; while ((content = fis.read()) != -1) { // convert to char and display it 
    System.out.print((char) content); } 

Это тот беспорядок устроились:

File file = new File("myfil"); 
String fileContent = ""; // String to keep track of file content 
try { 
    FileInputStream fis = new FileInputStream(file); 
    int content; 

    while ((content = fis.read()) != -1) 
    { 
     fileContent += (char)content; // append this to the file content as char 
    } 
} catch (IOException e) { 
    System.out.print("Problem reading file"); 
} 

System.out.print(fileContent); // print it 

Имейте в виду, вам придется импортировать некоторые вещи в свой проект , Это линии импорта, если у вас их еще нет:

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
3

Предположим, что ваш файл содержит URL-адрес в каждой строке сделать это:

BufferedReader br = new BufferedReader(new FileReader(file)); 
String line; 
while((line = br.readLine()) != null) { 
    // do something with line. 
} 

Но вы должны быть более конкретными в вашем вопросе. В чем проблема?

+0

Файл файла = новый файл («myfil»); \t \t \t попробовать (FileInputStream Fis = новый FileInputStream (файл)) { \t \t \t \t \t \t INT содержание; \t \t \t while ((content = fis.read())!= -1) \t \t \t { \t \t \t \t // преобразовать в уголь и отображать ее \t \t \t \t System.out.print ((символ) содержание); \t \t \t \t \t \t \t \t \t \t \t} ...... Я попытался this.But Я хочу URL в формате строки – Rose

+0

а это не то, что я предложил. сделайте то, что я разместил, и у вас будет строка – kmera

+2

, вы даже прочитали ответ? – kmera

1

Если вы вообще не хотите писать код, просто используйте FileUtils-class.

import org.apache.commons.io.FileUtils; 
... 

public void yourMethod() { 
    List<String> lines = FileUtils.readLines(yourFile); 
} 
+0

Это аккуратно. Можете ли вы также включить оператор импорта в свой ответ? –

+0

Импорт включен. –

0

Вы можете использовать регулярное выражение для получения списка со всеми URL-адресами своего файла, а затем итерировать список для чего-то.

Это пример.

public class GetURL { 

public static void extractUrls(String input, List<URL> allUrls) 
     throws MalformedURLException { 
    Pattern pattern = Pattern 
      .compile("\\b(((ht|f)tp(s?)\\:\\/\\/|~\\/|\\/)|www.)" 
        + "(\\w+:\\[email protected])?(([-\\w]+\\.)+(com|org|net|gov" 
        + "|mil|biz|info|mobi|name|aero|jobs|museum" 
        + "|travel|[a-z]{2}))(:[\\d]{1,5})?" 
        + "(((\\/([-\\w~!$+|.,=]|%[a-f\\d]{2})+)+|\\/)+|\\?|#)?" 
        + "((\\?([-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" 
        + "([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)" 
        + "(&(?:[-\\w~!$+|.,*:]|%[a-f\\d{2}])+=?" 
        + "([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)*)*" 
        + "(#([-\\w~!$+|.,*:=]|%[a-f\\d]{2})*)?\\b"); 

    Matcher matcher = pattern.matcher(input); 
    while (matcher.find()) { 
     allUrls.add(new URL(matcher.group())); 
    } 

} 

public static void main(String[] args) throws IOException { 
    List<URL> allUrls = new ArrayList<URL>(); 
    BufferedReader br = new BufferedReader(new FileReader("./urls.txt")); 
    String line; 
    while ((line = br.readLine()) != null) {    
     extractUrls(line, allUrls); 
    } 

    Iterator<URL> it = allUrls.iterator(); 

    while (it.hasNext()) { 
        //Do something 
     System.out.println(it.next().toString()); 
    } 

} 

} 

Посмотрите на Apache Commons FileUtils и метод readFileToString (исходный файл) для обращенного непосредственно подать в строку.

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