文件管理和大小

时间:2015-12-16 11:52:22

标签: java

我有一个从练习随机化器应用程序生成的Java任务,这非常痛苦。说明如下:

  

使用必须的公共标识符编写名为Stearyl的类   包含两个名为mAmatorial和mSamanid的公共静态方法。该   第一种方法mAmatorial应该接受作为参数字符串(String)。   该字符串将包含要创建的文件的名称。警告:   你必须设置文件位置的路径这个文件应该   具有以下特点:

     

大小:1077字节

     

允许的字节列表:byte [] aRetooth = {97,98,99,100,101,102,   103,104,105}。允许的字节列表应设置为static   Stearyl类的公共特征命名为aRetooth。文件数据必须是   随机而且是可分的。 (所有字节大致相同   出现次数)。

     

方法mAmatorial应该返回一个包含long的变量类型   前500字节的总和。 mSamanid的第二种方法必须接受   作为参数一个String(String),它将包含一个文件的名称。   该文件被读入内存(设置如上所述的路径),为此   将记录以下指标:

     

尺寸

     

定义的表中包含的每个字节的出现次数   aRetooth表。数据应作为整数数组返回   (int)来自mSamanid。在该表的位置1(例如a [0])将是   文件的大小和剩余的将有数量   每个字节的出现次数(例如,在位置2中出现的次数)   第一个字节,依此类推)。

当我检查任务时,它说:

java.lang.Exception: File was not made correctly in method mAmatorial (wrong size, it should be 1077 bytes)

你知道错误在哪里吗?这是来自java excercise randomizer的练习。这意味着生成器有主要和你发布方法,所以它可以检查你的答案。也许你可以这样使用......

public static void main(String args[]){
    Stearyl sl=new Stearyl();
    long a=sl.mAmatorial("C:\Users\***\Desktop\java_programming_2\exercises\temp.txt");
        System.out.println(a);
    int f[]=sl.mSamanid("C:\Users\***\Desktop\java_programming_2\exercises\temp.txt");
    for (int i=0;i<f.length;i++){
        System.out.println(f[i]);
    }

}

我的代码是:

import java.util.Random;
import java.io.*;

public class Stearyl{
    public static int fileSize=1077;
    public static byte[] aRetooth = {97, 98, 99, 100, 101, 102, 103, 104, 105};

public static long mAmatorial(String filename){
    Random random=new Random();
        try {

    File file1=new File(filename);
    boolean success = file1.createNewFile();

        if (!success){
            file1.delete();
            file1.createNewFile();
        }  

    } catch (IOException e) {
    }
    BufferedOutputStream out = null;
    long sumFirst500=0;
    try {
        out = new BufferedOutputStream(new FileOutputStream(filename));
        for (int i=0;i<fileSize;i++){
            byte a=aRetooth[random.nextInt(aRetooth.length)];
            if (i<500) {
                   sumFirst500+=a;
                }
            out.write(a);
                } 

        out.close();
    } catch (IOException e) {
    }


    return sumFirst500;

}
public static int[]mSamanid(String filename){
    int[]pinakas=new int[aRetooth.length+1];
    int length=0;
    byte[] bytes=null;
    try {
    File file1=new File(filename);
    InputStream is = new FileInputStream(file1);
        length = (int) file1.length();
        bytes = new byte[(int)length];
        // Read in the bytes
        int offset = 0;
        int numRead = 0;
        while (offset < bytes.length
               && (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
            offset += numRead;
        }
        // Ensure all the bytes have been read in
        if (offset < bytes.length) {
            throw new IOException("Could not completely read file "+file1.getName());
        }
       is.close();
        } catch (IOException e) {
    }

    pinakas[0]=length;

    for (int j=0;j<aRetooth.length;j++){
            pinakas[j+1]=0;
        }
    for (int i=0;i<bytes.length;i++){
        for (int j=0;j<aRetooth.length;j++){
            if (bytes[i]==aRetooth[j]) pinakas[j+1]++;
        }
    }

    return pinakas;
    }

}

0 个答案:

没有答案