Java 定义文件大小的上限

Java 定义文件大小的上限,java,filesize,Java,Filesize,我正在开发一个基于Web的编译器。为此,我需要将必须传递给源代码的输入保存在文件中,然后将生成的输出保存在文件中。我希望将输出文件的文件大小限制为最大值。 以下是代码片段: BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dir + "/run.sh"))); out.write("cd \"" + dir +"\"\n"); o

我正在开发一个基于Web的编译器。为此,我需要将必须传递给源代码的输入保存在文件中,然后将生成的输出保存在文件中。我希望将输出文件的文件大小限制为最大值。 以下是代码片段:

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dir + "/run.sh")));
            out.write("cd \"" + dir +"\"\n");
            out.write("chroot .\n");
            out.write("./a.out < in.txt > out.txt");
            out.close();
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dir+“/run.sh”));
out.write(“cd\”“+dir+”\“\n”);
out.write(“chroot.\n”);
out.write(“./a.outout.txt”);
out.close();

如何定义文件大小的上限?

一种可能是使用
ulimit-f
限制文件输出的总大小

另一种可能是通过管道输出
dd bs=1 count=NNNNNN


顺便说一下,您不需要以这种方式运行shell脚本。你可以这样做:

exec(new String[]{
     "/bin/sh", "-c", 
     "cd \"" + dir + "\" ; chroot . ; ./a.out < in.txt > out.txt"
});
exec(新字符串[]{
“/bin/sh”、“-c”,
“cd\”“+dir+”“”chroot../a.outout.txt”
});

但这并不能解决“注入”安全问题。你真的需要解决这个问题

请在句子开头加一个大写字母。也可以用大写字母表示I,缩写和首字母缩略词如JEE或WAR。这使得人们更容易理解和帮助。顺便说一下,这段代码看起来很容易被注入。。。例如,如果有一个名为“rm-rf.;echo”的目录,该怎么办?