解决Java正则表达式去除数据中的尖括号出现输出文件中数据缺失的问题

        由于我的实验中需要用到RDF三元组格式的数据,从网上下载的LUBM数据集中的数据含有“< >”和“.”使得这些含特殊字符的数据不方便存储到数据表中,编写Java代码想把这些字符去掉,考虑用正则表达式,但对这一块不熟悉。又请教大神发现可以用替换的办法来实现。原始数据格式为“ .”运行后的数据变为“http://www.Department0.University1000.edu/AssistantProfessor0 http://spark.elte.hu#doctoralDegreeFrom http://www.University292.edu

Java代码如下:

package com.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class Test {
    public static void main(String[] args) {

        // String s =" .";
        try {
            
//读取文件
            BufferedReader br = new BufferedReader(new FileReader("D:\\LUBM_1.n3"));
            String data = "";   
//+ "\r\n"
            
            File file = new File("D:\\LUBM.n3");
            BufferedWriter bw = new BufferedWriter(new FileWriter(file));
            int i;
          
 while((i=br.read())>0){
                data = br.readLine().replaceAll("[<>]+", "").replace(" .", ""); 
//接着读下一行
                bw.write(data);
                bw.newLine();
            }
            System.out.println("跑完了!");
            bw.close(); 
            br.close();
         } catch (Exception e) {
            e.printStackTrace();

        }
    }
}

       开始的时候用while(data! = null)循环的时候,拿到空值,导致导出的数据条数不完整,莫名减少了二百多条。后来声明一个整型变量i,再循环while((i=br.read())>0)时先读数据,数据量大于0才循环去读下一行,有效解决了读到空值时也循环的问题,最后输出的文件中数据条数没缺失。

你可能感兴趣的:(数据修改问题)