1,hjj,123,0
2,hj,123,0
内容如上,
更新的内容为123或0,逗号分隔
已知要更新的行号lineNum

解决方案 »

  1.   

    普通TXT文件
    文件内容如下
    1,hjj,123,0
    2,hj,123,0
    ---------
    ---------
    对应编号,姓名,密码,成绩
    我要更新某个用户的成绩,java里面如何实现?
    我目前使用的方法是读取全部内容,然后更新内容,再把整个文件重写一次!
    求更新特定行,特定位置的方法!
      

  2.   


    package io;import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileWriter;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    public class Txt_Change {
    public void fox_Split(String txtIn, String txtOut) { File fileIn = new File(txtIn);
    File[] txtFiles = fileIn.listFiles();
    for (int i = 0; i < txtFiles.length; i++) {
    File txtFile = txtFiles[i];
    try {
    FileInputStream fis = new FileInputStream(txtFile);
    InputStreamReader isr = new InputStreamReader(fis);
    BufferedReader br = new BufferedReader(isr); File file = new File(txtOut + File.separator);
    if (!file.exists()) {
    file.mkdirs();
    }
    while (br.ready()) { String s = br.readLine(); s = replace(s); PrintWriter txtPw = new PrintWriter(new FileWriter(txtOut
    + File.separator + "Txt_Change" + ".txt", true));
    txtPw.println(s);
    txtPw.close(); }
    br.close();
    isr.close();
    fis.close(); } catch (Exception e) {
    e.printStackTrace();
    }
    }
    } public String replace(String s) {
    String[] str = s.split(",");
    String[] str1 = new String[str.length]; StringBuffer sb = new StringBuffer();
    for (int i = 0; i < str.length; i++) {
    if (i == 3) {
    str1[3] = 1111111 + "";
    } else {
    str1[i] = str[i];
    }
    sb.append(str1[i]);
    if (i != 3) {
    sb.append(";");
    }
    } return sb.toString();
    } public static void main(String[] args) {
    String txtIn = "E:\\Fox\\Fox1\\";
    String txtOut = "E:\\Fox\\Fox2\\"; Txt_Change txt_Change = new Txt_Change();
    txt_Change.fox_Split(txtIn, txtOut);
    }
    }
      

  3.   


    package io;import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileWriter;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    public class Txt_Change {
    public void fox_Split(String txtIn, String txtOut) {
    int rowNum=0;
    File fileIn = new File(txtIn);
    File[] txtFiles = fileIn.listFiles();
    for (int i = 0; i < txtFiles.length; i++) {
    File txtFile = txtFiles[i];
    try {
    FileInputStream fis = new FileInputStream(txtFile);
    InputStreamReader isr = new InputStreamReader(fis);
    BufferedReader br = new BufferedReader(isr); File file = new File(txtOut + File.separator);
    if (!file.exists()) {
    file.mkdirs();
    }
    while (br.ready()) {
    rowNum++;
    String s = br.readLine();
    if(rowNum==4){
    s = replace(s);
    }
    PrintWriter txtPw = new PrintWriter(new FileWriter(txtOut
    + File.separator + "Txt_Change" + ".txt", true));
    txtPw.println(s);
    txtPw.close(); }

    br.close();
    isr.close();
    fis.close(); } catch (Exception e) {
    e.printStackTrace();
    }
    }
    System.out.println(rowNum);
    } public String replace(String s) {
    String[] str = s.split(",");
    String[] str1 = new String[str.length];

    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < str.length; i++) {
    if (i == 3) {
    str1[3] = 1111111 + "";
    } else {
    str1[i] = str[i];
    }
    sb.append(str1[i]);
    if (i != 3) {
    sb.append(",");
    }
    } return sb.toString();
    } public static void main(String[] args) {
    String txtIn = "E:\\Fox\\Fox1\\";
    String txtOut = "E:\\Fox\\Fox2\\"; Txt_Change txt_Change = new Txt_Change();
    txt_Change.fox_Split(txtIn, txtOut);
    }
    }
      

  4.   

    每行都能该的话,单独某个行必然能该,加一个if判断就行,用rowNum记录一下要输出的行数
      

  5.   

    1,hjj,123,0
    2,hj,123,0
    3,haa,234,3
    4,ada,2324,23
    5,dds,212,541,hjj,123,0
    2,hj,123,0
    3,haa,234,3
    4,ada,2324,1111111
    5,dds,212,54
    后面是执行方法后的结果