java - Java - 在 res 文件夹中写入对象而不是在 bin 中写入
问题描述
我在将对象作为文件资源写入/读取时遇到问题。
我从Main.java
类中运行代码,并且我想将一个对象写入/读取到users.txt
文件中。我要写入/读取的对象是TryStructure
Object,它只是封装了一个 1 元素数组并实现了对象写入所需的 Serializable 接口。
package Main;
import java.io.Serializable;
import java.util.ArrayList;
public class TryStructure implements Serializable
{
private static final long serialVersionUID = 1L;
private ArrayList<Integer> a = new ArrayList<Integer>();
public TryStructure()
{
a.add(5);
}
public String getStructure()
{
return a.toString();
}
}
该类从文件中Main.java
写入和读取 obj 。users.txt
package Main;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.URISyntaxException;
import java.net.URL;
public class Main
{
public static void main(String[] args)
{
String res = "/res/users.txt";
write(res);
read(res);
}
private static void write(String resName)
{
TryStructure list = new TryStructure();
FileOutputStream fos;
ObjectOutputStream oos;
URL resource = Main.class.getClass().getResource(resName);
File file = null;
try
{
file = new File(resource.toURI());
fos = new FileOutputStream(file);
oos = new ObjectOutputStream(fos);
System.out.println("WRITING: " + list.getStructure());
oos.writeObject(list);
oos.close();
fos.close();
}
catch (IOException e)
{
System.err.println("users.txt not found !");
}
catch (URISyntaxException e)
{
e.printStackTrace();
}
}
private static void read(String resName)
{
FileInputStream fos;
ObjectInputStream oos;
URL resource = Main.class.getClass().getResource(resName);
File file = null;
try
{
file = new File(resource.toURI());
fos = new FileInputStream(file);
oos = new ObjectInputStream(fos);
System.out.println("READING: " + ((TryStructure) oos.readObject()).getStructure());
oos.close();
fos.close();
}
catch (IOException e)
{
System.err.println("users.txt not found !");
}
catch (ClassNotFoundException e)
{
System.out.println("AA");
}
catch (URISyntaxException e)
{
e.printStackTrace();
}
}
}
如果我运行代码,我会得到以下输出:
WRITING: [5]
READING: [5]
如果我然后检查 user.txt 文件,我发现它是空的,我在bin/res/user.txt
. 我不明白为什么它只更新 bin 文件夹中的文件而不更新 res 文件夹中的文件,为什么会这样?我想写入那个特定的文件。
谢谢你。
解决方案
推荐阅读
- java - 来自 coderbyte 的无效结果
- laravel - npm run dev 在共享主机服务器上中止
- css - 需要输入 css 来设计一个 div
- css - 使用 CSS 添加的图标:之前不会出现在 Chrome 上
- html - 如何在组件中添加下划线,如 v-text 字段或 v-input 字段
- javascript - 解决recaptcha时如何发出alert()?
- python - 如何正确保存 Pandas Dataframe 中多个页面的抓取数据?
- c++ - 在编译时将项目附加到 std::initializer_list
- user-interface - 如何“优雅地”停止 QThread?
- sql - 如何在 Oracle PL SQL 中将 INTO 与 SELECT AS 一起使用?