java输出记事本文件不包含任何数据

java输出记事本文件不包含任何数据,java,Java,此代码从文件中读取颜色,然后写入记事本。 它工作得很好,只是我得到了一长列数字。 当我尝试更改代码以获取多列时,输出文件为空。 如果列太多,是否不接受任何数据? 戴夫 package color1; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import jav

此代码从文件中读取颜色,然后写入记事本。 它工作得很好,只是我得到了一长列数字。 当我尝试更改代码以获取多列时,输出文件为空。 如果列太多,是否不接受任何数据? 戴夫

package color1;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import javax.imageio.ImageIO;

public class color1 {

        public static void main(String args[]) throws IOException {
        try {
            //read image file
            File file1 = new File("C:\\Users\\user\\Desktop\\project\\quh2.jpg");
            BufferedImage image1 = ImageIO.read(file1);

            int h=image1.getHeight();

            int w=image1.getWidth();

            FileWriter fstream = new FileWriter("C:\\Users\\user\\Desktop\\project\\pixellog1.txt");
            BufferedWriter out = new BufferedWriter(fstream);

            out.write(""+h+","+w);

            for (int x=250; x<800; x=x+10) {

               for (int y=0; y<500; y=y+10){
                  int c = image1.getRGB(x,y);
                  Color color = new Color(c);
                  float  p = color.getRed();

                   out.newLine();
                   out.write(""+p);

                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}t of numbers 
包装颜色1;
导入java.awt.Color;
导入java.awt.image.buffereImage;
导入java.io.BufferedWriter;
导入java.io.File;
导入java.io.FileWriter;
导入java.io.IOException;
导入javax.imageio.imageio;
公共类颜色1{
公共静态void main(字符串args[])引发IOException{
试一试{
//读取图像文件
File file1=新文件(“C:\\Users\\user\\Desktop\\project\\quh2.jpg”);
BuffereImage image1=ImageIO.read(文件1);
int h=image1.getHeight();
int w=image1.getWidth();
FileWriter fstream=newFileWriter(“C:\\Users\\user\\Desktop\\project\\pixellog1.txt”);
BufferedWriter out=新的BufferedWriter(fstream);
写出(“+h+”、“+w”);

对于(int x=250;x您应该关闭您使用的资源

在这种情况下,输出文件未正确关闭,因此写入的数据永远不会刷新到该文件中

尝试在外部for循环之后添加此项:


out.close();

您应该确保在
out
上调用“flush”和“close”以确保缓冲区被刷新并写入文件。这与问题无关,但您不需要“in
out.write”(“+p”);
只是
out.write(p);
适用于基本体。如果您看到类似Float@534ab"您应该使用
.toString()
String.parse(p)
函数。@colind您应该将其设置为answer@MadProgrammer如果我要做的事情不仅仅是注释,它会被跟踪并标记为某个东西的复制。@ColinD您可以这样做;)