在Java中使用RandomAccessFile寫入和讀取文件

您好,我正在編寫一個在Java中寫入和讀取文件XML的程序。這是寫入文件

public static void main(String[] args) throws IOException {
    File file = new File("C:\\Test\\employee.XML");
    RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
    //int codeEmp = 0;
    String nameEmp[] = {"Name A", "Name B", "Name C", "Name D", "Name E"};
    String addEmp[] = {"Address A", "Address B",
            "Address C", " Address D",
            "Address E"};
    int saleEmp[] = {2000,1232,7653,1236,3452};
    int comEmp[] = {400,100,3000,300,500};

    StringBuffer buffer;
    StringBuffer buffer1;


    for (int i=0;i< nameEmp.length; i++){
        randomAccessFile.writeInt(i+1);

        buffer = new StringBuffer( nameEmp[i]);
        buffer.setLength(10);
        randomAccessFile.writeChars(buffer.toString());

        buffer1 = new StringBuffer( addEmp[i]);
        buffer1.setLength(100);
        randomAccessFile.writeChars(buffer1.toString());


        randomAccessFile.writeInt(saleEmp[i]);
        randomAccessFile.writeInt(comEmp[i]);
    }
    randomAccessFile.close();
}

讀者是

public static void main(String[] args) throws IOException {
    File file = new File("C:\\Test\\employee.XML");
    RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");

    int codeEmp, position = 0;
    char nameEmp[] = new char[10];
    char addEmp[] = new char [100];
    int saleEmp , comEmp;

    for(;;){
        randomAccessFile.seek(position);
        codeEmp = randomAccessFile.readInt();

        for (int i = 0; i < nameEmp.length; i++) {
            nameEmp[i] = randomAccessFile.readChar();
        }
        String nameEmpS= new String(nameEmp);

        for (int i = 0; i < addEmp.length; i++) {
            addEmp[i] = randomAccessFile.readChar();
        }
        String addEmpS= new String(addEmp);

        saleEmp =randomAccessFile.readInt();
        comEmp=randomAccessFile.readInt();

        System.out.println("Cod Emp: " + codeEmp + ", nombre: " +nameEmpS+ ", dirección: "+addEmpS+
                ", sale: " + saleEmp+ ", comisión: " + comEmp );

        position= position + 36;

        if (randomAccessFile.getFilePointer()==file.length())break;
    }
    randomAccessFile.close();
}

問題是,當(dāng)我運(yùn)行閱讀器文件時,它返回了許多行,只有第一行是可以的,但其他行是錯誤的。我怎樣才能修復(fù)它?這是控制臺

Cod Emp:1,nombre:姓名A,dirección:地址A,銷售:2000,comisión:400

Cod Emp:7536672,名稱:A,dirección:Name B廣告,銷售:6553714,商品編號:6619251

Cod Emp:0,nombre:,dirección:?名稱B地址B,銷售:0,comisión:0

? 最佳回答:

您在此處指定“隨機(jī)”下一個讀取位置:

position= position + 36;

除非每條記錄后面有36個字節(jié)的填充,否則這是沒有意義的。注釋掉行position= position + 36;randomAccessFile.seek(position);,因?yàn)槿绻鷮⒚看螌懭肱c讀取匹配,則下一個搜索位置將正確移動。

Also note:

  • 編寫一個名為employee.XML的文件,它不是XML格式,這對其他人來說是非常誤導(dǎo)的。
  • 您不需要在此處使用RandomAccessFile,因?yàn)槟乃袑懭攵际琼樞虻摹?/li>
主站蜘蛛池模板: 美女福利视频一区二区| 国产成人精品一区二区秒拍| 久久国产三级无码一区二区| 无码国产精品一区二区免费模式 | 国产精品女同一区二区| 国产成人精品一区二三区熟女| 亚洲国产一区在线| 日本亚洲国产一区二区三区| 夜夜爽一区二区三区精品| 精品一区二区视频在线观看| 久久91精品国产一区二区| 久久婷婷色综合一区二区| 国产一区二区三区小向美奈子| 亚洲国产成人久久一区二区三区| 久久无码人妻一区二区三区| 日本不卡一区二区视频a| 中文字幕一区二区区免| 中文字幕不卡一区| 国产一区二区在线观看app| 美女视频免费看一区二区| 在线观看国产一区二区三区| 日本高清一区二区三区| 伊人久久精品无码麻豆一区| 亚洲AV无码片一区二区三区| 无码一区二区三区AV免费| 久久一区二区三区精华液使用方法| 麻豆一区二区三区精品视频| 影音先锋中文无码一区| 在线成人一区二区| 日韩视频一区二区| 日本一区二区三区不卡视频中文字幕| 精品成人一区二区三区免费视频| 无码精品人妻一区| 国产亚洲情侣一区二区无码AV| 久久精品一区二区三区不卡| 无码人妻久久一区二区三区免费| 人妻无码第一区二区三区| 亚洲日韩国产一区二区三区在线| 国产精品一区二区久久乐下载 | 久久久精品日本一区二区三区 | 韩国女主播一区二区|