Java 写入和重命名已读取和修改的文件
我有一项任务,要求我编写一个程序,读入命令行中给出的图像(在运行程序之前,图像保存在项目文件夹中),然后平铺并更改图像上的颜色,并使用Java 写入和重命名已读取和修改的文件,java,bufferedimage,naming,Java,Bufferedimage,Naming,我有一项任务,要求我编写一个程序,读入命令行中给出的图像(在运行程序之前,图像保存在项目文件夹中),然后平铺并更改图像上的颜色,并使用-平铺后缀保存此新文件 我在堆栈溢出中唯一能找到的是使用renameTo方法,但变量“inputfile”的类型BufferedImage未定义该方法,因此当前代码不会编译 File outputfile = inputfile.renameTo(inputfile + "-tiled"); try { ImageIO.write(inputfile1,
-平铺
后缀保存此新文件
我在堆栈溢出中唯一能找到的是使用renameTo
方法,但变量“inputfile”的类型BufferedImage
未定义该方法,因此当前代码不会编译
File outputfile = inputfile.renameTo(inputfile + "-tiled");
try {
ImageIO.write(inputfile1, "png", outputfile);
} catch (IOException e) {
e.printStackTrace();
}
有什么更好的方法可以做到这一点?不要重命名文件;您需要使用
文件
构造函数创建一个新文件,文件名为字符串
// --- READ ---
File inputFile = new File(args[0]);
BufferedImage image = ImageIO.read(inputFile);
// --- PERFORM IMAGE MANUPULATION ---
...
// --- DERIVE NAME ---
String inputPath = inputFile.getPath();
// do string manipulation to turn into outputPath (using "-tiled")
File outputFile = new File(outputPath);
// --- WRITE ---
ImageIO.write(image, "png", outputFile);
从write
方法的JavaDocs中:
使用支持给定格式的任意ImageWriter将图像写入文件。如果已经存在一个文件,其内容将被丢弃
因此,它将自动创建一个新文件。请注意,
File
实例并不直接表示文件句柄。它们只是文件的虚拟表示;真正的文件只有在写入时才会创建。它现在表示,对于类型BuffereImage,getPath方法也未定义。发生了什么事?您的输入文件
是一个缓冲图像
而不是一个文件。。。请确保inputfile
是一个文件,并确保您能很好地命名变量。但inputfile需要是程序其余部分的一个BufferedImage,以便修改大小和颜色,以及所有使用BufferedImage类的操作,请将其称为inputImage
,并保留inputfile
(或路径字符串)用于以后存储数据。您可以使用两个变量,而不是一个。永远不要在标识符中造成类型混淆。内存中的图像不是文件。感谢所有帮助。对于我如何初始化新的inputImage变量,仍然感到困惑?如果它为null,则什么都不做。。。。