从文件中读取字符串数据

时间:2014-01-27 15:57:01

标签: java json file

我想从文件中读取字符串数据,并且必须传递文件中的每个字符串以进行某些操作。例如,如果我的文件拥有网站的链接,那么我必须提取每个链接并解析其数据。我已经完成了通过传递URL作为输入来解析网站。但是现在我认为它有利于将整个链接存储为字符串并将其作为参数传递。那么如何从文件中读取URL并解析每个URL数据?任何人都可以指定执行的代码此?

4 个答案:

答案 0 :(得分:3)

假设您的文件在每一行都包含一个网址,请执行以下操作:

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

但是你的问题应该更具体。问题在哪里?

答案 1 :(得分: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;

答案 2 :(得分:1)

如果您根本不想编写代码,只需使用FileUtils-class即可。

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

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

答案 3 :(得分:0)

您可以将正则表达式用于获取列表,其中包含文件的所有网址,稍后会迭代列表以执行某些操作。

这是一个示例。

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+:\\w+@)?(([-\\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(文件源),将文件直接转换为String。