⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xbookmarkieserializer.java

📁 XBrowser是一个完全免费并且开源的Web浏览器
💻 JAVA
字号:
/****************************************************************
*              XBrowser  -  eXtended web Browser                *
*                                                               *
*           Copyright (c) 2000-2001  Armond Avanes              *
*     Refer to ReadMe & License files for more information      *
*                                                               *
*                                                               *
*                      By: Armond Avanes                        *
*       Armond555@yahoo.com     &    Armond333@yahoo.com        *
*                http://xbrowser.sourceforge.net/               *
*****************************************************************/
package xbrowser.bookmark.io;

import java.io.*;
import java.util.*;

import xbrowser.bookmark.*;

public class XBookmarkIESerializer implements XBookmarkSerializer
{
	public XBookmarkIESerializer()
	{
	}

	public void importFrom(String file_name, XBookmarkFolder root_folder) throws Exception
	{
	File file = new File(file_name);

		if( !file.isDirectory() )
			throw new Exception("Couldn't find any folder for importing bookmarks as IE format!");

	File[] files = file.listFiles(ieFileFilter);

		for( int i=0; i<files.length; i++ )
		{
			if( files[i].isFile() )
				loadBookmark(files[i], root_folder);
			else
				loadBookmarkFolder(files[i], root_folder);
		}
	}

	private void loadBookmarkFolder(File file, XBookmarkFolder parent)
	{
	XBookmarkFolder bm_folder = new XBookmarkFolder();

		bm_folder.setTitle( file.getName() );
		//bm_folder.setDescription("Imported from IE");
		parent.addBookmark(bm_folder);

	File[] files = file.listFiles(ieFileFilter);

		for( int i=0; i<files.length; i++ )
		{
			if( files[i].isFile() )
				loadBookmark(files[i], bm_folder);
			else
				loadBookmarkFolder(files[i], bm_folder);
		}
	}

	private void loadBookmark(File file, XBookmarkFolder parent)
	{
		try
		{
		XBookmark bookmark = new XBookmark( getHRefFromFile(file) );
		String file_name = file.getName();
		int dot_index = file_name.lastIndexOf('.');

			if( dot_index!=-1 )
				file_name = file_name.substring(0, dot_index);

			bookmark.setTitle(file_name);
			//bookmark.setDescription("Imported from IE");
			parent.addBookmark(bookmark);
		}
		catch( Exception e )
		{
		}
	}

	private String getHRefFromFile(File file) throws Exception
	{
	RandomAccessFile rand_file = null;

		try
		{
		String str = "";

			rand_file = new RandomAccessFile(file, "r");

			while( !str.toUpperCase().startsWith("URL=") )
				str = rand_file.readLine();

			return str.substring(4);
		}
		finally
		{
			if( rand_file!=null )
				rand_file.close();
		}
	}

	public void exportTo(String file_name, XBookmarkFolder root_folder) throws Exception
	{
	File file = new File(file_name);

		if( !file.isDirectory() )
			throw new Exception("Couldn't find any folder to export bookmarks as IE format!");

	Iterator bookmarks = root_folder.getBookmarks();

		while( bookmarks.hasNext() )
			saveBookmarksImpl( (XAbstractBookmark)bookmarks.next(), file);
	}

	private void saveBookmarksImpl(XAbstractBookmark abs_bm, File file)
	{
		try
		{
			if( abs_bm instanceof XBookmark )
				saveBookmark( (XBookmark)abs_bm, file);
			else if( abs_bm instanceof XBookmarkFolder )
				saveBookmarkFolder( (XBookmarkFolder)abs_bm, file);
		}
		catch( Exception e )
		{
		}
	}

	private void saveBookmark(XBookmark bookmark, File file) throws Exception
	{
	File bm_file = new File(file, fixFileName(bookmark.getTitle())+".url");

		if( bm_file.exists() )
			bm_file.delete();

		bm_file.createNewFile();

	RandomAccessFile rand_file = new RandomAccessFile(bm_file,"rw");

		rand_file.writeUTF("[InternetShortcut]\n");
		rand_file.writeUTF("URL="+bookmark.getHRef()+"\n");
		rand_file.writeUTF("Modified=\n");
		rand_file.close();
	}

	private void saveBookmarkFolder(XBookmarkFolder bm_folder, File file) throws Exception
	{
	File bm_folder_file = new File(file, fixFileName(bm_folder.getTitle())+"/");

		bm_folder_file.mkdir();

	Iterator bookmarks = bm_folder.getBookmarks();

		while( bookmarks.hasNext() )
			saveBookmarksImpl( (XAbstractBookmark)bookmarks.next(), bm_folder_file);
	}

	private String fixFileName(String file_name)
	{
	StringBuffer str = new StringBuffer();
	char ch;

		for( int i=0; i<file_name.length(); i++ )
		{
			ch = file_name.charAt(i);

			if( ch=='\\' || ch=='/' || ch==':' || ch=='*' || ch=='?' ||
				ch=='\"' || ch=='<' || ch=='>' || ch=='|' )
				str.append('_');
			else
				str.append(ch);
		}

		return str.toString();
	}

	private class XIEFileFilter implements FileFilter
	{
		public boolean accept(File pathname)
		{
			if( pathname.isFile() )
				return( pathname.toString().endsWith(".url") );
			else
				return true;
		}
	}

// Attributes:
	private FileFilter ieFileFilter = new XIEFileFilter();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -