JAVA程序中怎么把信息存到文件中

JAVA程序中怎么把信息存到文件中,第1张

这个问题就是涉及到标准输入输出IO的问题啊。我给你写一个程序你想看看!

import javaioBufferedReader;

import javaioFile;

import javaioFileInputStream;

import javaioFileOutputStream;

import javaioFileWriter;

import javaioInputStreamReader;

import javaniochannelsFileChannel;

import javanioByteBuffer;

public class Test{

public static void main(String[] args) throws Exception {

//创建2个文件

File file1 = new File("D://test1txt");

File file2 = new File("d://test2txt");

file1createNewFile();

file2createNewFile();

//从键盘输入的字符写入test1txt

FileWriter fout = new FileWriter(file1);

String str=null;

Systemoutprintln("Please input a String:");

BufferedReader fin = new BufferedReader(new InputStreamReader(Systemin));

str = finreadLine();

Systemoutprintln(str);

foutwrite(str,0,strlength());

foutflush();

foutclose();

finclose();

//复制文件test1txt的内容到test2txt

//为了让你明白通道所以我这里用了2种读写入文件的方法

new Exam2()copy("D://test1txt", "d://test2txt");

}

/

复制文件封装类

@param url1

@param url2

@throws Exception

/

public void copy(String url1, String url2) throws Exception {

FileInputStream input = new FileInputStream(url1);

FileChannel filechannel = inputgetChannel();

FileOutputStream output = new FileOutputStream(url2);

FileChannel filechannel2 = outputgetChannel();

ByteBuffer buf = ByteBufferallocate(1024 8);

while (filechannelread(buf) != -1) {

bufflip();

filechannel2write(buf);

bufclear();

}

inputclose();

filechannelclose();

outputclose();

filechannel2close();

}

}

您的进步是我最大的动力,如果你觉得我回答的合理的话,请给我多加分。谢谢,如果不明白的话,请给我留言。大家相互学习啊! 加油!

重新回答你的问题!听好了!打开myeclipse,左边视图中右键Import,在d出的窗口中第一个文件夹,选择Existing Projects into Workspase!然后点Next,在新窗口中点Browse!选择你的项目!确定!将下面的Copy projects into workspace 框选上!然后Finish!就OK了!笨蛋!

应该是环境变量配置有问题,

classpath: ;%java_home%\lib;%java_home%\lib\tooljar

java_home: C:\Program Files\Java\jdk150_01

path: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

你看看你都配对了不,其中java_home配你自己的jdk目录

或者你把java文件拷贝到jdk的bin目录下编译一下试试

希望对你有帮助

1、 类Vector:

类Vector是Java的历史集合类,隶属于javautil包。它包装了异构链表和数组杂合体,具有以下两个特点:

向量是异构的,不要求每个元素的类型相同,向量中可以混合多种对象类型;

向量是数组杂合体,因为它们可以在增加元素时动态增大。

其异构性正好符合数据库记录中属性类型不一的特点,而其动态性也正好符合数据库查询时,结果集记录个数不定的特点。

类Vector定义如下:

public class Vector extends AbstractList

implements List , Cloneable , Serializable{…}

实现了向量成员的查找、新增、删除等方法。如:add(Object obj)可方便地加入一个对象;get(int index)可方便地得到向量中的一个对象;remove(Object obj)。则可方便地删除向量中一个对象。

· 2、 类JTable:

JTable组件是Swing组件中比较复杂的小件,隶属于javaxswing包,它能以二维表的形式显示数据。类JTable定义如下:

public class JTable extends JComponent

implements TableModelListener, Scrollable, TableColumnModelListener,

ListSelectionListener, CellEditorListener, Accessible{…}

类JTable在显示数据时具有以下特点:

可定制性:可以定制数据的显示方式和编辑状态;

异构性:可以显示不同类型的数据对象,甚至包括颜色、图标等复杂对象;

简便性:可以以缺省方式轻松地建立起一个二维表。

其可定制性可满足不同用户和场合的要求,异构性也正好符合数据库访问结果集中属性类型不一的特点。类JTable提供了极为丰富的二维表格 *** 作方法,如设置编

辑状态、显示方式、选择行列等,在此不一一赘述。

使用类JTable显示数据之前,必须根据情况生成定制模型、单元绘制器或单元编辑器。类AbstractListModel用来定制用户自己的数据模型,这个类在后面要介绍。

TableCellRenderer接口用来定制单元绘制器,TableCellEditor接口用来定制单元编辑器,这两个接口主要用于颜色对象的处理上,在示例中没有用到,不做过多说明。

· 3、 类AbstractTableModel:

类AbstractTableModel是一个抽象类,没有完全实现,不能实例化,使用时必须在程序中实现方法。它隶属于javaxswingtable 。类定义如下:

public abstract class AbstractTableModel extends Object

implements TableModel, Serializable{…}

类AbstractTableModel提供了TableModel接口中绝大多数方法的缺省实现。TableModel接口定义了JTable 的基础数据结构。用户要生成自己的数据模型,本来可以

通过实现TableModel接口中所有方法来满足要求,但管理听众表的功能对于所有数据模型是共同的,所以在javaxswingtable中又定义了类AbstractTableModel来

处理这个工作。它既管理听众表,又为生成TableModelEvents事件并委托给听众提供了便利。

要想生成一个具体的TableModel作为AbstractTableMode的子类,至少必须实现下面三个方法:

public int getRowCount();

public int getColumnCount();

public Object getValueAt(int row, int column);

至此,我们可以建立一个简单二维表(5×5),实现方法如下:

TableModel dataModel = new AbstractTableModel() {

public int getColumnCount() { return 5; }

public int getRowCount() { return 5;}

public Object getValueAt(int row, int col) { return new Integer(rowcol); }

};

JTable table = new JTable(dataModel);

JScrollPane scrollpane = new JScrollPane(table);

· 二、 数据库及其连接方法简介:

示例采用Sybase数据库系统,数据库存放在数据库服务器中。路径为:D:/WORKER,数据库名为:workerdbf。具有以下字段:

字段名

类型

Wno(职工号)

VARCHAR

Wname(职工名)

VARCHAR

Sex(性别)

VARCHAR

Birthday(出生日期)

DATE

Wage(工资)

FLOAT

要连接此数据库,需使用javasql包中的类DriverManager。此类是用于管理JDBC驱动程序的实用程序类。它提供了通过驱动程序取得连接、注册,撤消驱动程序, 设置登记和数据库访问登录超时等方法。具体连接方法如下:

第一步:定位、装入和链接SybDriver类;

driver="comsybasejdbcSybDriver";

SybDriver sybdriver=(SybDriver)ClassforName(driver)newInstance();

第二步:注册SybDriver类;

DriverManagerregisterDriver(sybdriver);

第三步:取得连接(SybConnection)对象引用。

user="sa";

password="";

url="jdbc:sybase:Tds:202117203114:5000/WORKER";

SybConnection connection=(SybConnection)DriverManagergetConnection

(url,user,password);

建立完连接后,即可通过Statement接口进行数据库的查询与更改。

· 三、 实现方法:

限于篇幅,在此只给出核心代码,包引入、界面处理、变量定义等部分不再介绍。

第一步:对象声明。

AbstractTableModel tm;//声明一个类AbstractTableModel对象

JTable jg_table;//声明一个类JTable对象

Vector vect;//声明一个向量对象

JScrollPane jsp;//声明一个滚动杠对象

String title[]={"职工号","职工名","性别","出生日期","工资"};

//二维表列名

第二步:定制表格。

1、实现抽象类AbstractTableModel对象tm中的方法:

vect=new Vector();//实例化向量

tm=new AbstractTableModel(){

public int getColumnCount(){

return titlelength;}//取得表格列数

public int getRowCount(){

return vectsize();}//取得表格行数

public Object getValueAt(int row,int column){

if(!vectisEmpty())

return

((Vector)vectelementAt(row))elementAt(column);

else

return null;}//取得单元格中的属性值

public String getColumnName(int column){

return title[column];}//设置表格列名

public void setValueAt(Object value,int row,int column){}

//数据模型不可编辑,该方法设置为空

public Class getColumnClass(int c){

return getValueAt(0,c)getClass();

}//取得列所属对象类

public boolean isCellEditable(int row,int column){

return false;}//设置单元格不可编辑,为缺省实现

};

2、定制表格:

jg_table=new JTable(tm);//生成自己的数据模型

jg_tablesetToolTipText("显示全部查询结果");//设置帮助提示

jg_tablesetAutoResizeMode(JTableAUTO_RESIZE_OFF);

//设置表格调整尺寸模式

jg_tablesetCellSelectionEnabled(false);//设置单元格选择方式

jg_tablesetShowVerticalLines(true);//设置是否显示单元格间的分割线

jg_tablesetShowHorizontalLines(true);

jsp=new JScrollPane(jg_table);//给表格加上滚动杠

第三步:显示查询结果。

1、 连接数据库:第二部分已给出。

2、 数据库查询:

Statement stmt=connectioncreateStatement();

ResultSet rs=stmtexecuteQuery("select from worker");

3、 显示查询结果:

vectremoveAllElements();//初始化向量对象

tmfireTableStructureChanged();//更新表格内容

while(rsnext()){

Vector rec_vector=new Vector();

//从结果集中取数据放入向量rec_vector中

rec_vectoraddElement(rsgetString(1));

rec_vectoraddElement(rsgetString(2));

rec_vectoraddElement(rsgetString(3));

rec_vectoraddElement(rsgetDate(4));

rec_vectoraddElement(new Float(rsgetFloat(5)));

vectaddElement(rec_vector);//向量rec_vector加入向量vect中

}

tmfireTableStructureChanged();//更新表格,显示向量vect的内容。

try{ FileOutputStream fos=new FileOutputStream("testtxt",true);//true表明会追加内容 PrintWriter pw=new PrintWriter(fos); pwwrite(你想写入的内容); pwflush(); }catch(FileNotFoundException e){ eprintStackTrace(); }finally{ try{ pwclose(); }catch(Exception e){ eprintStackTrace(); } }

如果您在 Microsoft Windows 环境中工作 那么创建位图文件的功能将为您提供许多方便 例如 在我的上一个项目中 我必须将 Java 与 Microsoft Access 对接 Java 程序允许用户在屏幕上绘图 这幅图随后被打印到 Microsoft Access 报表中 由于 Java 不支持 OLE 我的唯一选择就是创建该图的一个位图文件 并通知 Microsoft Access 报表在何处能找到这个位图文件 如果您写过向剪贴板发送图像的应用程序 则这个技巧可能对您有用 尤其是当您将这个信息传递给另一个应用程序时 位图文件的格式 位图文件格式支持 位 RLE(行程长度编码)以及 位和 位编码 因为我们只处理 位格式 所以下面我们查看一下该文件的结构 位图文件分为三个部分 我已将它们列在下面 第 部分 位图文件的标头 标头包含位图文件的类型大小信息和版面信息 结构如下(摘自 C 语言结构定义) typedef struct tagBITMAPFILEHEADER {牋燯INT bfType;牋燚WORD bfSize;牋燯INT bfReserved ;牋燯INT bfReserved ;牋燚WORD bfOffBits;}BITMAPFILEHEADER;下面是对这个清单中的代码元素的说明 bfType 指定文件类型 其值始终为 BM bfSize 指定整个文件的大小(以字节为单位) bfReserved 保留 必须为 bfReserved 保留 必须为 bfOffBits 指定从 BitmapFileHeader 到图像首部的字节偏移量 现在您已经明白位图标头的用途就是标识位图文件 读取位图文件的每个程序都使用位图标头来进行文件验证 第 部分 位图信息标头 随后的标头称为信息标头 其中包含图像本身的属性 下面说明如何指定 Windows (或更高版本)设备独立位图 (DIB) 的大小和颜色格式: typedef struct tagBITMAPINFOHEADER {牋牋DWORD biSize;牋牋LONG biWidth;牋牋LONG biHeight;牋牋WORD biPlanes;牋牋WORD biBitCount;牋牋DWORD biCompression;牋牋DWORD biSizeImage;牋牋LONG biXPelsPerMeter;牋牋LONG biYPelsPerMeter;牋牋DWORD biClrUsed;牋牋DWORD biClrImportant;} BITMAPINFOHEADER;以上代码清单的每个元素说明如下 biSize 指定 BITMAPINFOHEADER 结构所需的字节数 biWidth 指定位图的宽度(以象素为单位) biHeight 指定位图的高度(以象素为单位) biPlanes 指定目标设备的位面数 这个成员变量的值必须为 biBitCount 指定每个象素的位数 其值必须为 或 biCompression 指定压缩位图的压缩类型 在 位格式中 该变量被设置为 biSizeImage 指定图像的大小(以字节为单位) 如果位图的格式是 BI_RGB 则将此成员变量设置为 是有效的 biXPelsPerMeter 为位图指定目标设备的水平分辨率(以 象素/米 为单位) 应用程序可用该值从最符合当前设备特征的资源群组中选择一个位图 biYPelsPerMeter 为位图指定目标设备的垂直分辨率(以 象素/米 为单位) biClrUsed 指定位图实际所用的颜色表中的颜色索引数 如果 biBitCount 设为 则 biClrUsed 指定用来优化 Windows 调色板性能的参考颜色表 biClrImportant 指定对位图的显示有重要影响的颜色索引数 如果此值为 则所有颜色都很重要 现在已定义了创建图像所需的全部信息 第 部分 图像 在 位格式中 图像中的每个象素都由存储为 BRG 的三字节 RGB 序列表示 每个扫描行都被补足到 位 为了使这个过程稍复杂一点 图像是自底而上存储的 即第一个扫描行是图像中的最后一个扫描行 下图显示了标头 (BITMAPHEADER) 和 (BITMAPINFOHEADER) 以及部分图像 各个部分由垂线分隔 D B | E B EC EC | FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF现在 我们开始检视代码 现在我们已经知道了 位位图文件的结构 下面就是您期待已久的内容 用来将图像对象写入位图文件的代码 import java awt ;import java io ;import java awt image ;public class BMPFile extends Component {牋// 私有常量牋private final static int BITMAPFILEHEADER_SIZE = ;牋private final static int BITMAPINFOHEADER_SIZE = ;牋// 私有变量声明牋// 位图文件标头牋private byte bitmapFileHeader [] = new byte [ ];牋private byte bfType [] = { B M };牋private int bfSize = ;牋private int bfReserved = ;牋private int bfReserved = ;牋private int bfOffBits = BITMAPFILEHEADER_SIZE + BITMAPINFOHEADER_SIZE;牋// 位图信息标头牋private byte bitmapInfoHeader [] = new byte [ ];牋private int biSize = BITMAPINFOHEADER_SIZE;牋private int biWidth = ;牋private int biHeight = ;牋private int biPlanes = ;牋private int biBitCount = ;牋private int biCompression = ;牋private int biSizeImage = x ;牋private int biXPelsPerMeter = x ;牋private int biYPelsPerMeter = x ;牋private int biClrUsed = ;牋private int biClrImportant = ;牋// 位图原始数据牋private int bitmap [];牋// 文件部分牋private FileOutputStream fo;牋// 缺省构造函数牋public BMPFile() {牋}牋public void saveBitmap (String parFilename Image parImage intparWidth int parHeight) {牋牋炉ry {牋牋牋牋fo = new FileOutputStream (parFilename);牋牋牋牋save (parImage parWidth parHeight);牋牋牋牋fo close (); 牋牋爙牋牋焘atch (Exception saveEx) {牋牋牋牋saveEx printStackTrace ();牋牋爙牋}牋/牋 saveMethod 是该进程的主方法 该方法牋 将调用 convertImage 方法以将内存图像转换为牋 字节数组 writeBitmapFileHeader 方法创建并写入牋 位图文件标头 writeBitmapInfoHeader 创建 牋 信息标头 writeBitmap 写入图像 牋牋/牋private void save (Image parImage int parWidth int parHeight) {牋牋炉ry {牋牋牋牋convertImage (parImage parWidth parHeight);牋牋牋牋writeBitmapFileHeader ();牋牋牋牋writeBitmapInfoHeader ();牋牋牋牋writeBitmap ();牋牋爙牋牋焘atch (Exception saveEx) {牋牋牋牋saveEx printStackTrace ();牋牋爙牋}牋/牋 convertImage 将内存图像转换为位图格式 (BRG) 牋 它还计算位图信息标头所用的某些信息 牋牋/牋private boolean convertImage (Image parImage int parWidth int parHeight) {牋牋爄nt pad;牋牋燽itmap = new int [parWidth parHeight];牋牋燩ixelGrabber pg = new PixelGrabber (parImage parWidth parHeight 牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋牋燽itmap parWidth);牋牋炉ry {牋牋牋牋pg grabPixels ();牋牋爙牋牋焘atch (InterruptedException e) {牋牋牋牋e printStackTrace ();牋牋牋牋return (false);牋牋爙牋牋爌ad = ( ((parWidth ) % )) parHeight;牋牋燽iSizeImage = ((parWidth parHeight) ) + pad;牋牋燽fSize = biSizeImage + BITMAPFILEHEADER_SIZE +BITMAPINFOHEADER_SIZE;牋牋燽iWidth = parWidth;牋牋燽iHeight = parHeight;牋牋爎eturn (true);牋}牋/牋 writeBitmap 将象素捕获器返回的图像转换为牋 所需的格式 请记住 扫描行在位图文件中是牋 反向存储的!牋牋 每个扫描行必须补足为 个字节 牋/牋private void writeBitmap () {牋牋牋int size;牋牋牋int value;牋牋牋int j;牋牋牋int i;牋牋牋int rowCount;牋牋牋int rowIndex;牋牋牋int lastRowIndex; lishixinzhi/Article/program/Java/JSP/201311/19219

以上就是关于JAVA程序中怎么把信息存到文件中全部的内容,包括:JAVA程序中怎么把信息存到文件中、用myeclipse软件编写的java程序如何保存到U盘、装了JDK,用记事本编写java程序,保存为.java,在cmd下运行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9601156.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存