关于 文件读写

杨洪波 2002-05-05 02:18:36
我做一个程序,现在的问题是:
总共是三个串,我想按顺序将他们写到同一个文件中,请问用什么类,什么方法?第一个串的长度可变不固定。
...全文
66 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
杨洪波 2002-05-08
  • 打赏
  • 举报
回复
对不起,我几天没来了。
我上次回,就已经想给分了。只是没空来。




你的方法很好。
我实现时,将文件长度也也进去了。我的功能已经实现。
非常感谢。
newman0708 2002-05-07
  • 打赏
  • 举报
回复
telenths(非法操作)
见得很具体,很好啊。
快给他分数把
telenths 2002-05-06
  • 打赏
  • 举报
回复
如果已经知道了串的长度就好办多了
建议你这样做:
文件以此写入:
50字节的串str1
60字节的串str2
file.txt 的内容

读文件时可以用 RandomAccessFile(随机存取)
先读取50个字节 -> byte[] -> str1
再读取60个字节 -> byte[] -> str2
最后用 readLine() 方法把剩下的读完

至于 \n 我想因该考虑进去,
因为 Java 在读文件时会把 \n 也作为一个 byte
而 readLine() 是以 \n 作为结束标志的
杨洪波 2002-05-05
  • 打赏
  • 举报
回复
TO:telenths(非法操作)
非常感谢你的程序。
但我有一个问题:这里一定要考虑 \N 吗?
我的具体意思是这样的:
(1)有一个文件file.txt(这个文件是由用户选的,长度不定)。
(2)有一个50字节的串str1。这个串是我以前将一个结构用ObjectOutputStream写到文件中的,现在将它读出来。不一定读成串的形式,我现在只会把他用ObjectInputStream读成以前的结构。但我想,应该可以把它读为串吧。因为保存他的文件可以用记事本打开。
(3)有另一个串str2是60字节的。
我想将这三部分用一个文件保存。用邮件发给对方。对方收到我发的文件,能将这三部分分别读出来。
我的意思是,只要能把他们读出就可。不一定要是串的形式。
能不能不考虑 文件中的"\n"这样的东西?
telenths 2002-05-05
  • 打赏
  • 举报
回复
是我把文件位置放错了
代码没有问题,不知是不是符合你的要求
可我总觉得有点麻烦
telenths 2002-05-05
  • 打赏
  • 举报
回复
按你的要求,我的思路是这样的
因为串里可能包含 \n
所以读文件时必须得知道串的长度

文件包含两部分信息
N
Data
读文件时先读取文件长度,再读取数据,同时与长度比较
下面是我的 Code :
//*****************************************
写文件:
FileWriter Writer = new FileWriter("file.txt");
Writer.write(Data1.length()+"\n");
Writer.write(Data1+"\n");

Writer.write(Data2.length()+"\n");
Writer.write(Data2+"\n");

Writer.write(Data3.length()+"\n");
Writer.write(Data3+"\n");

Writer.flush();
Writer.close();

//******************************************
读文件:
String str = "";
String[] Data = {"","",""};
int size;
try{
BufferedReader Reader = new BufferedReader(new FileReader("file.txt"));
for(int i = 0;i < 3;i++){
while(true){
str = Reader.readLine();
if(str.equals("")) continue;
size = new Integer(str).intValue(); //Exception
break;
}
while(true){
str = Reader.readLine();
if (str == null) break;
Data[i] += str;
if(Data[i].length() < size) continue;
else break;
}
}
Reader.close();
}catch(Exception e){

}
//**************************************************
可是好像有点问题,也许还有更好的思路,大家拿出来讨论讨论
杨洪波 2002-05-05
  • 打赏
  • 举报
回复
我想是我没说清楚。
telenths(非法操作)是实现将文件读成穿串。
我的意思是说,文件读成的串是变长的。
我要将这三个串存为文件。
在以后从该文件中将三个串分别读出来。怎么实现。


顺便问一下:有谁懂签名啊?请问用DSA算法对定长的串签的名长度是否固定?
非常感谢。
telenths 2002-05-05
  • 打赏
  • 举报
回复
String str = "";
String data = "";
BufferedReader Reader = new BufferedReader(new FileReader("file.txt"));
while(true){
str = Reader.readLine();
if (str == null) break;
data += str;
}
Reader.close();
//return data;
杨洪波 2002-05-05
  • 打赏
  • 举报
回复
是这样的,我的第一个串是从文件中读出来的(整个文件是个串)。
请问怎么读成串?
alphazhao 2002-05-05
  • 打赏
  • 举报
回复
依我看,他的本意可能不是要这样
应该不会这么简单吧
wangwenyou 2002-05-05
  • 打赏
  • 举报
回复
String str1 = "1";
String str2 = "2";
String str3 = "3";
String str = str1 + str2 +str3;

FileOutputStream out = new FileOutputStream( fileName );
out.write( str );
out.close();

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧