这种方法,以二进制存储,最省地方,最快, 但是用记事本打开,看不出来,必须用16进制编辑器打开才能看, 不过用程序读出来很容易下例:write往文件写,read从文件读 import java.io.*; import java.util.Random;public class XXX { public static void main(String args[]) { write(); read();
}
public static void write() { System.out.println("Write"); try{ int x = 5; int y = 6; BufferedOutputStream fout = new BufferedOutputStream( new FileOutputStream("d:\\index.txt")); fout.write(x); fout.write(y);
Random rand = new Random(); int array[][] = new int[x][y];
} public static void read() { System.out.println("Read"); try{ BufferedInputStream fin = new BufferedInputStream( new FileInputStream("d:\\index.txt")); int x, y; x = fin.read(); y = fin.read(); int array[][] = new int[x][y];
但是用记事本打开,看不出来,必须用16进制编辑器打开才能看,
不过用程序读出来很容易下例:write往文件写,read从文件读
import java.io.*;
import java.util.Random;public class XXX
{ public static void main(String args[])
{
write();
read();
}
public static void write()
{
System.out.println("Write");
try{
int x = 5;
int y = 6;
BufferedOutputStream fout = new BufferedOutputStream(
new FileOutputStream("d:\\index.txt"));
fout.write(x);
fout.write(y);
Random rand = new Random();
int array[][] = new int[x][y];
for(int i=0; i<x; i++){
System.out.println();
for(int j=0; j<y; j++){
int temp = rand.nextInt(100);
System.out.println(temp);
fout.write(temp);
}
}
fout.close();
}catch(Exception e)
{ System.out.println(e);}
}
public static void read()
{
System.out.println("Read");
try{
BufferedInputStream fin = new BufferedInputStream(
new FileInputStream("d:\\index.txt"));
int x, y;
x = fin.read();
y = fin.read();
int array[][] = new int[x][y];
for(int i=0; i<x; i++){
System.out.println();
for(int j=0; j<y; j++){
int temp = fin.read();
System.out.println(temp);
}
}
fin.close();
}catch(Exception e)
{ System.out.println(e);}
}
}
刚才我也把这个程序写出来了import java.util.*;
import java.io.*;public class Create extends Random
{ public static final int LINE=10;
public static void main(String[] args)
{
Create ni=new Create();
int[][] p=new int[3][LINE];
for (int i=0;i<3;++i)
for (int j=0;j<LINE;++j)
p[i][j]=ni.next(8);
try
{
FileOutputStream fo=new FileOutputStream("unsort");
DataOutputStream dout=new DataOutputStream(fo);
for (int i=0;i<3;++i)
for (int j=0;j<LINE;++j)
dout.writeInt(p[i][j]);
dout.flush();
dout.close();
}
catch(IOException e)
{
System.out.println("IO ERROR");
}
}
}
我就是因为用什么记事本打不开,以为有问题,所以才问的。
那要怎么样才能保证记事本也可以打开呢。还有个问题在写文件的时候,怎么才能够换行呢?还要等一下结账哦,对不住
import java.io.*;
import java.util.StringTokenizer;public class Untitled1
{ public Untitled1()
{
String[] dest = new String[100];
try{
String fileContent = ReadFile("d:\\a.txt");
TakeToArrary(fileContent,dest);
ShowArrayInfo(dest);
} catch(Exception e) {
}
}
public static void main(String[] args)
{
Untitled1 untitled11 = new Untitled1();
} private String ReadFile(String fileName) throws IOException {
File file = new File(fileName) ;
int fileLength = (int) file.length() ;
int charRead = 0 ;
char[] content = new char[fileLength] ;
FileReader reader = new FileReader(file) ; while(reader.ready()) {
charRead = reader.read(content,charRead,fileLength - charRead);
} return new String(content,0,fileLength - 1);
} private void TakeToArrary(String content, String[] destArr) {
int i = 0 ;
StringTokenizer st = new StringTokenizer(content);
while (st.hasMoreTokens()) {
destArr[i++] = st.nextToken() ;
}
} private void ShowArrayInfo(String[] Arr) {
for(int i=0 ; i< Arr.length ; i ++)
if(Arr[i].length() != 0) System.out.print(" " + Arr[i]) ;
}
}
>那要怎么样才能保证记事本也可以打开呢。
>还有个问题在写文件的时候,怎么才能够换行呢?你是不是想存成文本文件,有格式,可以在记事本里编辑?
那就用字符流,你得把int i =345 转换为 String i = "345"
存到文件里,你可以以white space为分割,也就是说
空格 tab 回车 都被视作分割符
如果文件很小,可以一次全读出来,再用StringTokenizer挑出来