Easy to Learn Java: Programming Articles, Examples and Tips

Start with Java in a few days with Java Lessons or Lectures

Home

Code Examples

Java Tools

More Java Tools!

Java Forum

All Java Tips

Books

Submit News
Search the site here...
Search...
 
Search the JavaFAQ.nu
1000 Java Tips ebook

1000 Java Tips - Click here for the high resolution copy!1000 Java Tips - Click here for the high resolution copy!

Java Screensaver, take it here

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java programming articles and tips. Please take your copy here.

Take your copy of free "Java Technology Screensaver"!.

Easy Learn Java: Programming Articles, Examples and Tips - Page 421


Previous 1060 Stories (530 Pages, 2 Per Page) Next

Jakarta Commons IO 1.1 has been released

Go to all tips in File systems

Jakarta Commons IO
1.1 has been released. Commons IO provides low level utilities, file filters and
streams that probably should be in the JDK.


This release fixes all open bugs and adds various enhancements. These include
FileSystemUtils, which allows you to obtain the free space on a drive, and
FilenameUtils which allows you to manipulate filenames without using File
objects.

Commons IO is a library of utilities to assist with developing IO functionality.

There are three main areas included:



  • Utility classes - with static methods to perform common tasks

  • Filters - various implementations of file filters

  • Streams - useful stream, reader and writer implementations



IOUtils contains utility methods dealing with reading, writing and
copying. The methods work on InputStream, OutputStream, Reader and Writer.

As an example, consider the task of reading bytes from a URL, and printing them.
This would typically done like this:


InputStream in = new URL( "http://jakarta.apache.org" ).openStream();
try {
InputStreamReader inR = new InputStreamReader( in );
BufferedReader buf = new BufferedReader( inR );
String line;
while ( ( line = buf.readLine() ) != null ) {
System.out.println( line );
}
} finally {
in.close();
}

With the IOUtils class, that could be done with:


InputStream in = new URL( "http://jakarta.apache.org" ).openStream();
try {
System.out.println( IOUtils.toString( in ) );
} finally {
IOUtils.closeQuietly(in);
}

In certain application domains, such IO operations are common, and this class
can save a great deal of time. And you can rely on well-tested code.

For utility code such as this, flexibility and speed are of primary importance.
However you should also understand the limitations of this approach. Using the
above technique to read a 1GB file would result in an attempt to create a 1GB
String object!

The FileUtils class contains utility methods for working with File
objects. These include reading, writing, copying and comparing files.

For example to read an entire file line by line you could use:


File file = new File("/commons/io/project.properties");
List lines = FileUtils.readLines(file, "UTF-8");

The FilenameUtils class contains utility methods for working with
filenames without using File objects. The class aims to be consistent
between Unix and Windows, to aid transitions between these environments (such as
moving from development to production).


For example to normalize a filename removing double dot segments:


String filename = "C:/commons/io/../lang/project.xml";
String normalized = FilenameUtils.normalize(filename);
// result is "C:/commons/lang/project.xml"

The FileSystemUtils class contains utility methods for working with
the file system to access functionality not supported by the JDK. Currently, the
only method is to get the free space on a drive. Note that this uses the command
line, not native code.


For example to find the free space on a drive:


long freeSpace = FileSystemUtils.freeSpace("C:/");

Different computer architectures adopt different conventions for byte
ordering. In so-called "Little Endian" architectures (eg Intel), the
low-order byte is stored in memory at the lowest address, and subsequent bytes
at higher addresses. For "Big Endian" architectures (eg Motorola), the
situation is reversed.

There are two classes in this package of relevance:



  • The EndianUtils class contains static methods for swapping the
    Endian-ness of Java primitives and streams.

  • The SwappedDataInputStream class is an implementation of the DataInput
    interface. With this, one can read data from files of non-native
    Endian-ness.


For more information, see http://www.cs.umass.edu/~verts/cs32/endian.html



The org.apache.commons.io.filefilter package defines an
interface (IOFileFilter) that combines both java.io.FileFilter
and java.io.FilenameFilter. Besides that the package offers a
series of ready-to-use implementations of the IOFileFilter
interface including implementation that allow you to combine other such filters.
These filters can be used to list files or in FileDialog, for example.


See the filefilter package javadoc for more details.



The org.apache.commons.io.input and org.apache.commons.io.output
packages contain various useful implementations of streams. These include:



  • Null output stream - that silently absorbs all data sent to it

  • Tee output stream - that sends output data to two streams instead of one

  • Byte array output stream - that is a faster version of the JDK class

  • Counting streams - that count the number of bytes passed

  • Proxy streams - that delegate to the correct method in the proxy

  • Lockable writer - that provides synchronization of writes using a lock
    file


See the input or output package javadoc for more details.


This information is from http://jakarta.apache.org/commons/io/



5063 bytes more | comments? | Printer Friendly Page  Send to a Friend | Score: 0
Posted by aalex on Thursday, November 03, 2005 (07:00:00) (3138 reads)

Java 2 SE 6.0 Aesthetics Preview

Go to all tips in Swing, AWT

Frank Schoep recently wrote an article "Java 2 SE 6.0 Aesthetics Preview":


"While surfing on the web the other day I decided to check out the
development progress of the next Java version. Codenamed Mustang and gifted with
the number 6.0, it promises some exciting new graphical features for Java
applications. I downloaded a binary snapshot and tested two new aesthetic
changes: subpixel font rendering and the new and improved GTK Look and Feel.


Which horse, and which course

Before we start, let me again state that I tested a binary development
snapshot because Mustang is still in active development. The build number I
tested was b54, compiled and released on the 29th of september 2005. I tested
the self-extracting 32-bit and 64-bit Linux versions, not the RPM ones. I tested
the JDK on Ubuntu 5.04, Hoary Hedgehog, also both the 32-bit and 64-bit version.



My fonts in GNOME were set to Bitstream Vera Sans, although I'm not really sure
that font is used in the font rendering test. Base font size was 10 points.


Subpixel Antialiased Font Rendering
Short history

Let's dive into the first feature, subpixel antialiased font rendering,
because it will increase readability on modern TFT and LCD screen by a large
amount. Rendering of fonts on a subpixel grid was already supported by the major
operating systems, like Windows and Mac OS X, and desktop environments like KDE
and GNOME, but Java uses its own cross-platform software widget rendering system
called Swing.



Java offered simple grayscale antialiasing in earlier releases, which could be
activated by a runtime parameter, or set on run time using a system property.
Using GNOME, antialiasing would automatically be enabled if setup in the font
configuration panel. Mustang's subpixel antialiasing will activate when the
windowing system supports it. This feature works for Windows, Mac OS X and GNOME
already, but you can't get subpixel rendered text on other OSes and DEs yet,
which is a pity for KDE users like me. Luckily, it's entirely possible a command
line switch or system property will be introduced later on to manually enable
this behaviour. "


Read full (illustrated) article here: http://www.ffnn.nl/pages/articles/java/java-2-se-6.0-aesthetics-preview.php




comments? | Printer Friendly Page  Send to a Friend | Score: 0
Posted by aalex on Wednesday, November 30, 2005 (06:16:03) (2419 reads)

Previous 1060 Stories (530 Pages, 2 Per Page) Next

530| 529| 528| 527| 526| 525| 524| 523| 522| 521| 520| 519| 518| 517| 516| 515| 514| 513| 512| 511| 510| 509| 508| 507| 506| 505| 504| 503| 502| 501| 500| 499| 498| 497| 496| 495| 494| 493| 492| 491| 490| 489| 488| 487| 486| 485| 484| 483| 482| 481| 480| 479| 478| 477| 476| 475| 474| 473| 472| 471| 470| 469| 468| 467| 466| 465| 464| 463| 462| 461| 460| 459| 458| 457| 456| 455| 454| 453| 452| 451| 450| 449| 448| 447| 446| 445| 444| 443| 442| 441| 440| 439| 438| 437| 436| 435| 434| 433| 432| 431| 430| 429| 428| 427| 426| 425| 424| 423| 422|
421
| 420| 419| 418| 417| 416| 415| 414| 413| 412| 411| 410| 409| 408| 407| 406| 405| 404| 403| 402| 401| 400| 399| 398| 397| 396| 395| 394| 393| 392| 391| 390| 389| 388| 387| 386| 385| 384| 383| 382| 381| 380| 379| 378| 377| 376| 375| 374| 373| 372| 371| 370| 369| 368| 367| 366| 365| 364| 363| 362| 361| 360| 359| 358| 357| 356| 355| 354| 353| 352| 351| 350| 349| 348| 347| 346| 345| 344| 343| 342| 341| 340| 339| 338| 337| 336| 335| 334| 333| 332| 331| 330| 329| 328| 327| 326| 325| 324| 323| 322| 321| 320| 319| 318| 317| 316| 315| 314| 313| 312| 311| 310| 309| 308| 307| 306| 305| 304| 303| 302| 301| 300| 299| 298| 297| 296| 295| 294| 293| 292| 291| 290| 289| 288| 287| 286| 285| 284| 283| 282| 281| 280| 279| 278| 277| 276| 275| 274| 273| 272| 271| 270| 269| 268| 267| 266| 265| 264| 263| 262| 261| 260| 259| 258| 257| 256| 255| 254| 253| 252| 251| 250| 249| 248| 247| 246| 245| 244| 243| 242| 241| 240| 239| 238| 237| 236| 235| 234| 233| 232| 231| 230| 229| 228| 227| 226| 225| 224| 223| 222| 221| 220| 219| 218| 217| 216| 215| 214| 213| 212| 211| 210| 209| 208| 207| 206| 205| 204| 203| 202| 201| 200| 199| 198| 197| 196| 195| 194| 193| 192| 191| 190| 189| 188| 187| 186| 185| 184| 183| 182| 181| 180| 179| 178| 177| 176| 175| 174| 173| 172| 171| 170| 169| 168| 167| 166| 165| 164| 163| 162| 161| 160| 159| 158| 157| 156| 155| 154| 153| 152| 151| 150| 149| 148| 147| 146| 145| 144| 143| 142| 141| 140| 139| 138| 137| 136| 135| 134| 133| 132| 131| 130| 129| 128| 127| 126| 125| 124| 123| 122| 121| 120| 119| 118| 117| 116| 115| 114| 113| 112| 111| 110| 109| 108| 107| 106| 105| 104| 103| 102| 101| 100| 99| 98| 97| 96| 95| 94| 93| 92| 91| 90| 89| 88| 87| 86| 85| 84| 83| 82| 81| 80| 79| 78| 77| 76| 75| 74| 73| 72| 71| 70| 69| 68| 67| 66| 65| 64| 63| 62| 61| 60| 59| 58| 57| 56| 55| 54| 53| 52| 51| 50| 49| 48| 47| 46| 45| 44| 43| 42| 41| 40| 39| 38| 37| 36| 35| 34| 33| 32| 31| 30| 29| 28| 27| 26| 25| 24| 23| 22| 21| 20| 19| 18| 17| 16| 15| 14| 13| 12| 11| 10| 9| 8| 7| 6| 5| 4| 3| 2| 1|


Home Code Examples Java Forum All Java Tips Books Submit News, Code... Search... Offshore Software Tech Doodling

RSS feed Java FAQ RSS feed Java FAQ News     

    RSS feed Java Forums RSS feed Java Forums

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest 1999-2006 by Java FAQs Daily Tips.

Interactive software released under GNU GPL, Code Credits, Privacy Policy