编辑文本文件中的单个字符(Java)

时间:2015-10-08 11:51:26

标签: java file text edit writer

我有以下文本文件,首先是0或1,然后是两个字符串,所有三个都用逗号分隔:

0     ,     Bx     ,     Cz
1     ,     By     ,     Cx
0     ,     Bz     ,     Cy
etc.  ,     etc.   ,     etc.

我有以下代码:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Scanner;

public class Manager {

 static Scanner scanner;

 public Manager() {

 }

 public static void chooseFile(String thisFile) {
    try {
        scanner = new Scanner(new File(thisDeck));
        scanner.useDelimiter(",");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
 }

 static String getB() {
     String b = null;
     if (scanner.hasNextLine()) {
         String a = scanner.next();
         do {
             if (a.equals("1")) {
                 scanner.nextLine();
                 a = scanner.next();
             }
             if (a.equals("0")) {
                b = scanner.next();
             }
         } while (scanner.hasNextLine() && a.equals("1"));
     }
     if (!scanner.hasNextLine()) {
        b = “Done.”;
     }
     return b;
 }

 static String getC() {
     String c = null;
     if (scanner.hasNextLine()) {
        c = scanner.nextLine().substring(2);    
     } else {
        c = “Done.”;
     }
     return c;
 }

 static void changeA1() {
    //Here I want to change a value in the first "column" A to 1
    //The row/line to be changed is the one that the scanner just passed
 }
 static void changeA0() {
    //Here I want to change a value in the first "column" A to 0
    //The row/line to be changed is the one that the scanner just passed
 }

}

我的问题是如何将值A更改为0或1? GUI(调用此类)仅允许用户在调用getB()然后调用getC()之后更改值-A,因此当用于更改值A的函数时,扫描程序位于行的末尾。将调用该行。我可以用第二台扫描仪编辑值-A还是有另一种方式?

1 个答案:

答案 0 :(得分:0)

Scanner根本不允许对文件进行任何修改。为此,您必须使用FileWriter或其他类。并且通常不建议使用两个对象同时修改和读取文件。大多数类甚至不允许这样做,因为文件内容通常会被流式传输(文件一直打开,并且在处理完整个缓冲区时会加载新的块)。

最简单的方法很可能是RandomAccessFilehttp://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html)。

如果值始终是固定大小的话,这还可以充分加快完整代码的速度。但是如果没有关于文件结构的更多信息,推荐任何东西都是相当困难的。