Archive

标签为 ‘JAVA’的文章

JAVA FileInputStream 和 FileReader的区别

在写检索文件的函数时,发现读取文件有两种方式,一种是FileInputStream,另一种是FileReader。它们的本质区别就是FileReader读取的是字符数据,而FileInputStream读取的是字节数据,举个简单的例子就知道了,另外下面两篇文章讲这个不错,详细可以点进去看:

java读取文件
Java FileInputStream与FileReader的区别
[Java]读取文件方法大全

package pkg;

import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;

public class ReadFile {
    public static void main(String args[]) {
 
        // 例1 – 使用FileInputStream 读取文件内容
        try (FileInputStream fis = new FileInputStream("test.log")) {
            int da = fis.read(); //读取流中的第一个字节数据
            while (da != -1) { //未到达流的末尾
                System.out.print(Integer.toHexString(da)+" ");
                da = fis.read(); //读取第二个字节数据
            }
            System.out.println();
        } catch (IOException e) {
            System.out.println("Failed to read binary data from File");
            e.printStackTrace();
        }
 
        // 例2 – Java中使用FileReader 读取文件数据
        try (FileReader reader = new FileReader("test.log")) {
            int ch = reader.read();
            while (ch != -1) {
                System.out.print((char) ch);
                ch = reader.read();
            }
        } catch (IOException io) {
            System.out.println("Failed to read character data from File");
            io.printStackTrace();
        }
    }
}

输出结果:

ef bb bf 68 65 6c 6c 6f 21 
hello!

JAVA Jung2 drawing network topology

看到同事用Python写了一个画topology的脚本,感觉很有意思,如果优化下,功能会更实用。最近在看java,是否java也有很好的API可以用?有了这种想法就来Google下吧,在Stackoverflow上发现了两篇需求差不多的文章:
How to dynamically display a simulated network topology in Java
comparing open source java graph drawing frameworks(JUNG and Prefuse) for drawing network topology

上面提到了几个不错的API,JUNG,Prefuse和JGraphX,这偏文章只总结JUNG。关于JUNG的包可以通过下面官网下载:http://jung.sourceforge.net

最新的版本也是5年前的版本了:JUNG 2.0.1,下载下来后是一个zip包,里面包含所有相关的JAR文件,解压后放好,可以随时调用,下面是介绍如何通过Eclipse调用JUNG2:
完整阅读

Eclipse install WindowBuilder pro

WindowBuilder pro是Eclipse可视化制作JAVA UI的插件,如何安装此插件呢?网上留的地址都是Google的地址,很多都不能用了,所以简单在此处说明下,直接去Eclipse官网:
http://eclipse.org/windowbuilder/download.php

找到对应的Eclipse版本,我的是4.3
java-eclipse-windowbuilder-01

在Eclipse点击“Install New Software”,把这个link放进去然后取个名字,就可以安装了,如图:
完整阅读

Java Learning – Basic 02

1. 构造函数:

特殊的方法,名字跟类名一直,无返回值,也没有void,如果没有构造函数,JVM在编译时会自动加一个隐含的构造函数,下面文章详细介绍了构造函数和this的用法:
http://blog.csdn.net/nypone/article/details/4693509

2. 对象传递和变量传递:

变量传递数值,但不改变原始数据;而对象传递的是引用,也就是地址,如果改变了,那么原始对象也会改变。这里扩展一下,如果If中==常用于基本数据类型的相等性,如果判断的是String对象呢?他判断的是两个对象的内存地址是否相同,如果想确内容是否相等,需要用equals方法

3. Java类的成员变量:

主要有两种,静态变量和实例变量。静态变量也是类变量,两种变量的界限也是一个在类,一个在实例。实例变量必须创建实例对象(new),才会分配空间;而只要加载类,就会给静态变量分配空间。

class Person
{
    int age ;
    String name; //实例变量,也叫对象变量
    static int totalFee; //静态变量,也叫类变量
    //类变量是所有对象共有,一个对象将它改变,其他对象得到的就是改变后的
    //而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象
    public void showName()
    {
        System.out.print(this.name);
    }
    public static void showTotalFee()
    //类方法是属于与类相关的,公共的方法
    {
        System.out.print(totalFee);
    }
}

完整阅读

Java Learning – Enterprise Architect for UML

跟据上一篇转的文章《面向接口编程详解(二)——编程实例》,我们的程序中有几个类,虽然不多,但要review一遍,还是要一个类一个类的看,然后弄清楚之间的关系,这种方法很麻烦,特别是我这种对JAVA不是特别熟的人来说,还有什么好方法么?Ok,在上文中,原作者画了一张UML图,用来表示类与类之间的关系。不知道大家记不记得,这种图可以很快弄清之间的关系。那么是否有好用的UML生成工具呢?

今天我会介绍两个工具:

1. Eclipse插件 UML Green
2. Enterprise Architect –> 强烈推荐,也是我们今天的主角
完整阅读