从mysql blob读取java.io.File

从mysql blob读取java.io.File,java,mysql,blob,Java,Mysql,Blob,我有下面的代码,它将列表存储到文件,然后存储到mysql blob列。是否可以从数据库中恢复该列表 ArrayList<String> myList = new ArrayList<String>(); File tempFile = File.createTempFile("myFile.temp"); tempFile.deleteOnExit(); FileOutputStream fileOutputStream = new FileOutputStream

我有下面的代码,它将列表存储到文件,然后存储到mysql blob列。是否可以从数据库中恢复该列表

ArrayList<String> myList = new ArrayList<String>();

File tempFile = File.createTempFile("myFile.temp");

tempFile.deleteOnExit();

FileOutputStream fileOutputStream = new FileOutputStream(tempFile);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeUnshared(myList);
objectOutputStream.close();

String trailQuery = "INSERT INTO table (tempFile) VALUES (?)";
PreparedStatement preparedStatement = connection.prepareStatement(trailQuery);
preparedStatement.setObject(1, tempFile);

正如@EJP提到的,java.io.File只不过是文件名的持有者。。。有错误的理解-因此文件的内容都不存在….

检查插入时数据库中存储的确切内容。我不是专家,但这可能不是您所期望的。还要发布完整的异常堆栈跟踪,并指向发生异常的代码行。
java.io.File
只不过是文件名的持有者。将文件名保存到数据库不会保存其内容。重新思考。不要将文件保存到blob。将列表保存到blob。
if (resultSet.next()) {

    InputStream fileInputStream = resultSet.getBinaryStream("tempFile");
    ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
    File inner = (File) objectInputStream.readObject();
    FileInputStream fileInputStreamInner = new FileInputStream(inner);
    ObjectInputStream objectInputStreamInner = new ObjectInputStream(fileInputStreamInner);

    ArrayList<String> myList = (ArrayList<String>) objectInputStreamInner.readObject();
    System.out.println(myList.size());
}
java.io.FileNotFoundException: \tmp\myFile.1708309680603860570.temp (The system cannot find the path specified)