精华内容
下载资源
问答
  • Java读取txt文件

    2021-04-01 15:51:48
    读取Txt文件并转换成实体类 这里是text文件的样例 //注意这里每一串的分割是tab键 \u0009 1 2003 Spring Soccer League (Spring '03) 2 2003 Summer Summer Soccer Fest 2003 3 2003 Autumn Autumn Soccer League ...

    读取Txt文件并转换成实体类

    这里是text文件的样例

    //注意这里每一串的分割是tab键 \u0009
    1 2003 Spring Soccer League (Spring '03)
    2 2003 Summer Summer Soccer Fest 2003
    3 2003 Autumn Autumn Soccer League (2003)
    4 2004 Spring Soccer League (Spring '04)
    5 2005 Summer The Summer of Soccer Love 2005
    6 2006 Autumn Autumn Soccer League (2006)

    1. 建立实体类

    注意这里只能用基本数据类型和String,不然可能会有一点小问题,自己可以试着改别的类型看看,如果能解决那是最好的。

    public class FootballStory {
        private int id;
        private int year;
        private String season;
        private String title;
    
        public FootballStory(){};
    
        public FootballStory(int id, int year, String season, String title) {
            this.id = id;
            this.year = year;
            this.season = season;
            this.title = title;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public int getYear() {
            return year;
        }
    
        public void setYear(int year) {
            this.year = year;
        }
    
        public String getSeason() {
            return season;
        }
    
        public void setSeason(String season) {
            this.season = season;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        @Override
        public String toString() {
            return "FootballStory{" +
                    "id=" + id +
                    ", year=" + year +
                    ", season='" + season + '\'' +
                    ", title='" + title + '\'' +
                    '}';
        }
    }
    

    2. 别写转换器,并且我用了单例模式,加了三重检测,防止一般的反射破化他

    import java.io.*;
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Pattern;
    
    public class ReadTxt {
    
        private volatile static ReadTxt readTxt = null;
        private static boolean shiyijian = false;
    
        private List list;
        private String path;
    
        public List getList() {
            return list;
        }
    
        public String getPath() {
            return path;
        }
    
        private ReadTxt(){
            synchronized (ReadTxt.class){
                if (shiyijian == false){
                    shiyijian=true;
                }else{
                    throw new RuntimeException("不要试图使用反射破坏单例");
                }
            }
        }
    
        //双重检测模式的懒汉式单例,dcl懒汉式
        public static ReadTxt getInstance(){
            if (readTxt==null){
                synchronized (ReadTxt.class){
                    if (readTxt==null){
                        readTxt = new ReadTxt();//不是一个原子性操作
                        /**
                         * 1.分配内存空间
                         * 2.执行构造方法,初始化对象
                         * 3.把这个对象指向这个空间
                         * 为什么这样写还不安全,是因为有jmm重排序,我们写的程序不一定按照我们写的顺序执行,机器会以更高效的顺序执行(说白了就是机器比较笨,不会遇见不可预知的错误)
                         * 所以要增加volatile这个东西,(保证所有线程可见,并且原子性)
                         */
                    }
                }
            }
            return readTxt;
        }
    
        public List<Object> readTextfile(String path,Class clas) throws Exception {
        	//相对路径和绝对路径都可以
            File file = new File(path);
            BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
            String s = new String();
            list = new ArrayList();
            while ((s = bufferedReader.readLine())!=null){
                //以分隔符分割,这里的分隔符不是空格,是tab键,所以要查一下ascii码的
                String[] string = s.split("\u0009");
                //转换类型
                Pattern compile = Pattern.compile("-?[0-9]+(\\.[0-9]+)?");
                Object[] objects= new Object[string.length];
                int len = 0;
                for (String s1 : string) {
                    if (compile.matcher(s1).matches())
                        objects[len++] = Integer.parseInt(s1);
                    else
                        objects[len++] = s1;
                }
                //获取类中的所有字段
                Field[] declaredFields = clas.getDeclaredFields();
                //获取字段类型
                Class[] classes = new Class[declaredFields.length];
                for (int i = 0; i < declaredFields.length; i++) {
                    classes[i] = declaredFields[i].getType();
                }
                //装载
                Constructor declaredConstructor = clas.getDeclaredConstructor(classes);
                Object o = declaredConstructor.newInstance(objects);
                list.add(o);
            }
            return list;
        }
    }
    

    3. 编写测试类

    import java.util.List;
    
    public class Test {
        public static void main(String[] args) throws Exception {
            ReadTxt readTxt = ReadTxt.getInstance();
            //相对路径和绝对路径都可以
            List list =  readTxt.readTextfile("leagues.txt", FootballStory.class);
            for (Object o : list) {
                FootballStory footballStory = new FootballStory();
                footballStory=(FootballStory) o;
                System.out.println(footballStory.toString());
            }
        }
    }
    

    效果如下
    FootballStory{id=1, year=2003, season=‘Spring’, title='Soccer League (Spring ‘03)’}
    FootballStory{id=2, year=2003, season=‘Summer’, title=‘Summer Soccer Fest 2003’}
    FootballStory{id=3, year=2003, season=‘Autumn’, title=‘Autumn Soccer League (2003)’}
    FootballStory{id=4, year=2004, season=‘Spring’, title='Soccer League (Spring ‘04)’}
    FootballStory{id=5, year=2005, season=‘Summer’, title=‘The Summer of Soccer Love 2005’}
    FootballStory{id=6, year=2006, season=‘Autumn’, title=‘Autumn Soccer League (2006)’}

    总结

    这算是一个小练习,用到了单例模式,反射和文件读取。

    展开全文
  • java实现读取txt文件并以在每行以空格取数据发布于 2020-7-7|复制链接分享一篇关于java实现读取txt文件并以在每行以空格取数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小妖过来看看吧简单一个例子。其中...

    java实现读取txt文件并以在每行以空格取数据

    发布于 2020-7-7|

    复制链接

    分享一篇关于java实现读取txt文件并以在每行以空格取数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小妖过来看看吧

    简单一个例子。其中正则是取消多余空格或者tab键

    ```java

    package test4;

    import java.io.BufferedReader;

    import java.io.FileReader;

    import java.io.IOException;

    public class ExplaceSql {

    public static void main(String[] args) {

    String filePath = ExplaceSql.class.getResource("").getPath()+"aaa.txt"; // 文件路径

    read(filePath);

    }

    /**

    * 读取内容

    */

    public static String read(String filePath){

    BufferedReader br = null;

    String line =null;

    //StringBuffer buf = new StringBuffer();

    try {

    //根据文件路径创建缓冲输入流

    br = new BufferedReader(new FileReader(filePath));//filePath中是aaa.txt文件

    String str = "";

    //循环读取文件的每一行,对需要修改的行进行修改,放入缓冲对象中

    while ((line = br.readLine()) != null) {

    //设置正则将多余空格都转为一个空格

    str=line+"\r\n";

    String[] dictionary = str.split("\\s{2,}|\t");

    for(int i=0;ijava逐行读写txt文件

    ```java

    package help;

    import java.io.BufferedReader;

    import java.io.BufferedWriter;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.InputStreamReader;

    import java.io.OutputStreamWriter;

    import java.util.HashMap;

    import java.util.Map;

    public class TXTParseUtils {

    private static final Integer ONE = 1;

    public static void main(String[] args) {

    Map map = new HashMap();

    /* 读取数据 */

    try {

    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("D:/报销.txt")),

    "UTF-8"));

    String lineTxt = null;

    while ((lineTxt = br.readLine()) != null) {

    String[] names = lineTxt.split(",");

    for (String name : names) {

    if (map.keySet().contains(name)) {

    map.put(name, (map.get(name) + ONE));

    } else {

    map.put(name, ONE);

    }

    }

    }

    br.close();

    } catch (Exception e) {

    System.err.println("read errors :" + e);

    }

    /* 输出数据 */

    try {

    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("D:/结果.txt")),

    "UTF-8"));

    for (String name : map.keySet()) {

    bw.write(name + " " + map.get(name));

    bw.newLine();

    }

    bw.close();

    } catch (Exception e) {

    System.err.println("write errors :" + e);

    }

    }

    }

    ```

    展开全文
  • 展开全部仅供参考packagecom.kidd.test....importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;/***...

    展开全部

    仅供参考package com.kidd.test.zhidao;

    import java.io.BufferedReader;

    import java.io.BufferedWriter;

    import java.io.File;

    import java.io.FileReader;

    import java.io.FileWriter;

    import java.io.IOException;

    /**

    * Hello world!62616964757a686964616fe4b893e5b19e31333363373665

    *

    */

    public class Execute {

    public static void main(String[] args) {

    File file = new File("D:\\123");

    listFile(file);

    }

    private static void listFile(File file) {

    if (!file.exists() || !file.isDirectory()) {

    System.out.println("文件路径不合法!");

    return;

    }

    String[] strings = file.list();

    File javaFile;

    for (String filename : strings) {

    javaFile = new File(file.getPath() + File.separator + filename);

    if (javaFile.isFile()) {

    if (filename.endsWith(".java")) {

    try {

    modifyFile(javaFile);

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    } else if (javaFile.isDirectory()) {

    listFile(javaFile);

    }

    }

    }

    private static void modifyFile(File javaFile) throws IOException {

    BufferedReader bReader = new BufferedReader(new FileReader(javaFile));

    File tempFile = new File(javaFile.getParent() + File.separator + javaFile.getName() + ".tmp");

    if (!tempFile.exists() && !tempFile.createNewFile()) {

    System.out.println("创建临时文件失败.临时文件路径为:" + tempFile.getPath());

    bReader.close();

    return;

    }

    BufferedWriter bWriter = new BufferedWriter(new FileWriter(tempFile));

    String temp;

    boolean modify = false;

    while ((temp = bReader.readLine()) != null) {

    if (!modify && temp.indexOf("\t") != -1) {

    modify = true;

    }

    bWriter.write(temp.replaceAll("\t", "    ")+"\r\n");

    }

    bWriter.close();

    bReader.close();

    if (modify) {

    System.out.println("该文件需要修改.File=" + javaFile.getPath());

    File bakFile = new File(javaFile.getPath() + ".bak");

    if (!javaFile.renameTo(bakFile)) {

    System.out.println("重命名源文件失败.源文件为:" + javaFile);

    tempFile.delete();

    return;

    }

    if (!tempFile.renameTo(javaFile)) {

    System.out.println("重命名临时文件失败.");

    if (!bakFile.renameTo(javaFile)) {

    System.out.println("还原源文件失败,源文件现在的路径是:" + bakFile);

    }

    tempFile.delete();

    return;

    }

    bakFile.delete();

    } else {

    System.out.println("该文件未存在需要修改的内容.File=" + javaFile.getPath());

    tempFile.delete();

    }

    }

    }

    展开全文
  • 使用java读取配置文件(ini、properties)

    千次阅读 2011-10-20 15:53:53
    但是对于ini文件进行读取时遇到转义字符时会有问题,例如当遇到STOREPATH = d:\test\,用Properties类读取时会将\t当成一个TAB来处理,因此自己写了一个简单读取配置文件的类,功能并不完善,对与ini文件中不同...
    JDK自带的Properties可以读取properties类型的文件,但是对于ini文件进行读取时遇到转义字符时会有问题,例如当遇到STOREPATH = d:\test\,用Properties类读取时会将\t当成一个TAB来处理,因此自己写了一个简单读取配置文件的类,功能并不完善,对与ini文件中不同section中同名属性并没有做处理。
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    public final class ConfigUtils {
    	public static Map<String, String> propMap = null;
    	
    	/** 初始化 */
    	public static void init(String path){
    		propMap = new HashMap<String, String>();
    		BufferedReader br = null;
    		try {
    			br = new BufferedReader(new FileReader(path));
    			String line = "";
    			while((line = br.readLine()) != null){
    				if(line.indexOf("=") != -1 && !line.trim().startsWith("#")
    						 && !line.trim().startsWith("//")){
    					String[] lineArr = line.split("=");
    					propMap.put(lineArr[0].trim(), lineArr[1].trim());
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				br.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	
    	/**
    	 * 获取所有键值对组成的Map
    	 * @param path 配置文件所在路径
    	 * @return
    	 */
    	public static Map<String, String> getPropMap(String path){
    //		if(propMap == null || propMap.isEmpty()){
    		init(path);
    //		}
    		
    		return propMap;
    	}
    	
    	/**
    	 * 获取属性值
    	 * @param path 配置文件所在路径
    	 * @param key 属性名
    	 * @return
    	 */
    	public static String getPropValue(String path, String key){
    //		if(propMap == null || propMap.isEmpty()){
    		init(path);
    //		}
    		
    		return propMap.get(key);
    	}
    	
    	/**
    	 * 设置某个属性的值
    	 * @param path
    	 * @param key
    	 * @param value
    	 */
    	public static void setPropValue(String path, String key, String value){
    		Map<String, String> map = new HashMap<String, String>();
    		map.put(key, value);
    		setPropValues(path, map);
    	}
    	
    	/**
    	 * 根据Map设置属性
    	 * @param path
    	 * @param map
    	 */
    	public static void setPropValues(String path, Map<String, String> map){
    		BufferedReader br = null;
    		BufferedWriter bw = null;
    		try {
    			br = new BufferedReader(new FileReader(path));
    			
    			StringBuffer sb = new StringBuffer();
    			String line = "";
    			// 读取文件并对替换文件内容
    			while((line = br.readLine()) != null){
    				if(line.indexOf("=") != -1 && !line.trim().startsWith("#")
    						 && !line.trim().startsWith("//")){
    					String[] lineArr = line.split("=");
    					String key = lineArr[0].trim();
    					String newValue = map.get(key);
    					if(null != newValue && !"".equals(newValue)){
    						sb.append(key).append(" = ").append(newValue).append("\r\n");
    					}else{
    						sb.append(line).append("\r\n");
    					}
    				}else{
    					sb.append(line).append("\r\n");
    				}
    			}
    			br.close();
    			bw = new BufferedWriter(new FileWriter(path));
    			// 写入文件
    			bw.write(sb.toString());
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				br.close();
    				bw.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	
    	
    
    
    	/** */
    	/**
    	 * 程序测试
    	 */
    	public static void main(String[] args) {
    
    	}
    }


     

    展开全文
  • 其中正则是取消多余空格或者tab键 package test4; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ExplaceSql { public static void main(String[] args...
  • public static final String fieldLimitChar = " ";...因为TXT中不同的数据项之间用tab间隔,所以我设定tab作为分隔标志,但是后来的数据中出现了用连续3个tab做间隔的数据项 请问要怎么处理,希望 能得到帮助。
  • 在这篇文章里,你将看到怎样用DOM XML解析器读取XML文件。DOM解析器解析整个XML文件并把它加载到内存中;然后模式化为一个树结构以便于便利或操作。 总之,就是把转换成了一个[url=...
  • MapInfo以表(Tab)的形式存储信息,每个表是由一组MapInfo文件....TAB文件实际上是一个文本文件,可以在写字板中打开观察其内容。2、属性数据文件,后缀为.DAT。该文件存放了地图的属性数据。.DAT文件是二进制文件,...
  • 其中正则是取消多余空格或者tab键package test4;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class ExplaceSql {public static void main(String[] args) {String ...
  • java读取和写入txt文件

    2014-08-07 09:51:41
    要处理的数据为以下数据,需要将数据中的(,),以及|全部变成tab空格: 1 Rhizoma Polygoni cuspidati(hu zhang|虎杖) CYP1B1  2 Rhizoma Polygoni cuspidati(hu zhang|虎杖) HGF HPTA  3 Rhizoma Polygoni ...
  • 其中正则是取消多余空格或者tab键package test4;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class ExplaceSql {public static void main(String[] args) {String ...
  • 其中正则是取消多余空格或者tab键package test4;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class ExplaceSql {public static void main(String[] args) {String ...
  • 本人以JAVA来实现以支付宝的账单表为例,实现JAVA读取CSV..csv是一种文件格式(如.txt、.doc等),也可理解.csv文件就是一种特殊格式的纯文本文件。即是一组字符序列,字符之间已英文字符的逗号或制表符(Tab)分隔。
  • yml 文件规则yml文件的好处,天然的树状结构,一目了然,实质上跟properties是差不多的。不支持tab缩进可以使用 "-小写字母" 或 "_小写字母"来 代替 "大写字母",如 userName 与 user-name ,user_name 含义是一样的...
  • Print results with a tab as separator, each row on new line. --shared-memory-base-name=name Base name of shared memory. -S, --socket=name Socket file to use for connection. --ssl Enable SSL for...
  • yaml 是专门用来写配置文件的语言,非常简洁和强大,2、支持多种语言:python、js、golang、java、c、c++3、yaml语法大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,...
  • 因为jquery的ajax有跨域问题,使用java读取rss源,用jquery解析返回回来的xml文件并显示 1、html代码,tab页面样式  &lt;div class="adlike dcsbox"&gt; &lt;div class="h"&...
  • 前几天需要写个读取和存入文件的程序,由于本人接触JAVA时间不长,一下就被各种流搞乱了头,后来整理一下,写出一点心得读入double类型的数据,以TAB键为分隔符fileReader= new FileReader("33geneSim.txt");...
  • properties文件在编写属性值时转成ASCII,这样取出来就不会乱码了例如tab=博客 转成tab=\u535a\u5ba2 可以用这个http://tool.oschina.net/encode?type=3来转
  • 今天我们来简单了解下PrintStream和...读取文本文件时一般用后者。Java的一个字符(char)是16bit的,一个byte是8bit的。PrintStream是写入一串8bit的数据的,PrintWriter是写入一串16bit的数据的。String缺省是用UN...
  • 要求:给定任意一个目录,以树形...每一层要加上一个缩进(tab)。 package com.zhk.io; import java.io.File; import java.util.ArrayList; public class ListAllFile { //用于判断目录或文件所在的层...
  • Android Excel Spreadsheet API 更多高级特征具备格式化工作表,行,列,单元格等能力Array,ArrayList 和 Recordset / Resultset数据导入与导出阅读与书写微软Excel文件格式(XLS, XLSX, XLSM, SpreadsheetML, Tab ...
  • java相关:详解springboot读取yml配置的几种方式发布于 2020-6-22|复制链接摘记: yml 文件规则yml文件的好处,天然的树状结构,一目了然,实质上跟properties是差不多的。不支持tab缩进可以使用 "-小写字母" 或 "_...
  • nextInt()、nextDouble()方法在遇到空白符(空格、回车、Tab)的时候会将前面的数据读取走,但是会丢下 回车 在缓冲区中,nextLine()方法在扫描的时候会将扫描到的空白符一同清理掉。此外,nextInt()、nextDouble()和...
  • python读取yaml配置文件

    2019-02-13 20:33:00
    支持多种语言:python、js、golang、java、c、c++ YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。 它的基本语法规则如下。 大小写敏感 使用缩进表示...
  • 这是一个Java工具类库,用户读取基于文本的数据文件,如CSV, tab分隔的或固定宽度格式的文件
  • 配置文件:dbconfig.properties 里面的数据 jdbc.url.jwhat=jdbc\:mysql\://ip\:3306/laibadev?useUnicode\=true&characterEncoding\=UTF-8 jdbc.username.jwhat= jdbc.password.jwhat= jdbc.dbType=mysql...
  • 支持多种语言:python、js、golang、java、c、c++YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。它的基本语法规则如下。大小写敏感使用缩进表示层级关系缩进时不...

空空如也

空空如也

1 2 3 4 5
收藏数 93
精华内容 37
关键字:

java读取tab文件

java 订阅