Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 写入和重命名已读取和修改的文件_Java_Bufferedimage_Naming - Fatal编程技术网

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,则什么都不做。。。。