java读取TXT文件类

来源:互联网 发布:windows装mac虚拟机 编辑:程序博客网 时间:2024/06/05 14:42

Java读取txt文件内容。可以作如下理解:

  1. 首先获得一个文件句柄。File file = new File();file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。

  2. 通过这条线路读取甲方的信息:new FileInputStream(file)目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西

  3. 既然你使用了FileInputStream()。那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据

  4. 解读完成后要输出呀。那当然要转换成IO可以识别的数据呀。那就需要调用字节码读取的方法BufferedReader()。同时使用bufferedReader()的readline()方法读取txt文件中的每一行数据哈。

package taxidata;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;


public class ReadFile {

    publicstatic void readTxtFile(String filePath) {
       InfoBean infoBean=new InfoBean();
       try {
           String encoding = "GBK";
           File file = new File(filePath);
           if (file.isFile() && file.exists()){ //判断文件是否存在
               InputStreamReader read = new InputStreamReader(
                       new FileInputStream(file), encoding);//考虑到编码格式
               BufferedReader bufferedReader = new BufferedReader(read);
               String lineTxt = null;
                OperationDB operationDB=new OperationDB();
               while ((lineTxt = bufferedReader.readLine()) != null) {
                   String[] s=lineTxt.split(",");
                   infoBean.setLicense_num(s[0].toString());
                   infoBean.setRecordtime(s[1].toString());
                   infoBean.setSet_num(Integer.valueOf(s[2]));
                   infoBean.setSpeed(Integer.valueOf(s[3]));
                   infoBean.setElevation(Double.valueOf(s[4]));
                   String location="point"+"("+Double.valueOf(s[6])+""+Double.valueOf(s[5])+")";
                   infoBean.setLocation(location);
                  
                   operationDB.addRcorder(infoBean);       
                   System.out.println(lineTxt);
                   
               }
               read.close();
           } else {
               System.out.println("找不到指定的文件");
           }
       } catch (Exception e) {
           System.out.println("读取文件内容出错");
           e.printStackTrace();
       }
    }
}

JAVA连接数据库 类

package taxidata;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class BeyondbConnection {
public static Connection getConnection() {

Connection con = null;
String url = "jdbc:beyondb://localhost:II7/store ";
String user = "suo";
String password = "123456";

try {

con = DriverManager.getConnection(url, user, password);
} catch (SQLException ex) {
Logger.getLogger(BeyondbConnection.class.getName()).log(Level.SEVERE,null, ex);
}
return con;

}
}

InfoBean类创建 类

package taxidata;


public class InfoBean {

String license_num;
String recordtime;
int set_num;
int speed;
Double elevation;
String location;

public InfoBean() {
}

public String getLicense_num() {
return license_num;
}

public void setLicense_num(String license_num) {
this.license_num = license_num;
}

public String getRecordtime() {
return recordtime;
}

public void setRecordtime(String recordtime) {
this.recordtime = recordtime;
}

public int getSet_num() {
return set_num;
}

public void setSet_num(int set_num) {
this.set_num = set_num;
}

public int getSpeed() {
return speed;
}

public void setSpeed(int speed) {
this.speed = speed;
}

public Double getElevation() {
return elevation;
}

public void setElevation(Double elevation) {
this.elevation = elevation;
}

public String getLocation() {
return location;
}

public void setLocation(String location) {
this.location = location;
}
}

 

数据库操作(向数据库添加数据) 类

 package taxidata;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class OperationDB {
       private Connection con = null;
    public void addRcorder(InfoBean infoBean) throws SQLException{
        if(con ==null){
             con = BeyondbConnection.getConnection();
        }
       
       String sql = "insert into taxidatavalues(?,?,?,?,?,st_geomfromtext(?))";
     
           PreparedStatement pstmt = con.prepareStatement(sql);
           pstmt.setString(1, infoBean.getLicense_num());
           pstmt.setString(2, infoBean.getRecordtime());
           pstmt.setInt(3, infoBean.getSet_num());
           pstmt.setInt(4, infoBean.getSpeed());
           pstmt.setDouble(5, infoBean.getElevation());
           pstmt.setString(6,infoBean.getLocation());
           
           pstmt.executeUpdate();   
    }
}

测试主函数 类

 package taxidata;


public class Text {

   
    publicstatic void main(String[] args) {
       String filePath = "C:\\GPS_2012_07_01.TXT";
       ReadFile readFile=newReadFile();  
       readFile.readTxtFile(filePath);
    }
}

 

 //过滤txt中的空行等符号

 

BufferedReader reader new BufferedReader(new FileReader("test.txt"));
PrintStream writer new PrintStream(new FileOutputStream("test_new.txt"));
String buf;
while ((buf=reader.readLine()) != null{
    if (buf.isEmpty()) {continue;}
    if (buf.matches("[/]+.*")) {
        buf buf.replaceAll("[/]+(.*)""$1"); //去掉前面的/
    }
    buf buf.replaceAll("\\s+(.*)"$1); //去掉前面的空格
    writer.println(buf);
}
reader.close();
writer.flush();
writer.close();
 
 或者下面用下面的代码 
 
 if (buf.isEmpty()) {continue;}
    buf buf.replaceAll("^\\s*([^\\s]*)""$1"); //这样可能保险一些,防止注释的前面有空格
    if (buf.matches("^[/]+.*")) {
        buf buf.replaceAll("^[/]+(.*)""$1"); //去掉前面的/
    }
    buf buf.replaceAll("^\\s*([^\\s]*)""$1"); //去掉前面的空格
0 0
原创粉丝点击