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